Czy ktoś wie, jak (lub czy można) określić alternatywne wymaganie lub zestaw wymagań w pliku specyfikacji, zamiast pojedynczego wymagania?
Załóżmy na przykład, że dostępne są dwa pakiety, wygodnie nazwane foo-bar
i bar-foo
. Moja paczka wymaga jednego z nich, ale nie obu, i nie obchodzi mnie, który z nich jest obecny. W czasie wykonywania używam tego, co jest dostępne.
Tak skutecznie chciałbym powiedzieć:
Requires: foo-bar OR bar-foo
O ile wiem, nie jest to możliwe, ale sądzę, że są tu ludzie, którzy wiedzą o RPM o wiele więcej niż ja, więc może jest jakiś sposób, aby to zrobić.
AKTUALIZACJA: Kontroluję tylko pakowanie bar-foo
, a nie foo-bar
, więc udostępnienie pakietu wirtualnego nie będzie działać.
AKTUALIZACJA: Rzeczą, której tak naprawdę potrzebuję, jest wirtualny pakiet wewnątrz każdego z pakietów. Powiedz foo-bar provides eagle' and
bar-foo zapewnia beagle and my package works with either (or both); but other packages require either
eagle or
beagle or
foo-bar or
bar-foo`, a system docelowy może mieć zainstalowany jeden lub oba.
Obecnie skłaniam się do rozwiązania tego za pomocą %pre
skryptu, który robi coś takiego:
rpm -q eagle || rpm -q beagle || echo "need eagle or beagle" && /bin/false
Chociaż jestem prawie pewien, że to zadziała, wydaje się, że to brutalne obejście śledzenia zależności RPM. Na przykład nigdy nie zobaczysz mojej paczki, gdy zapytasz whatrequires foo-bar
lub whatrequires beagle
.
AKTUALIZACJA: Z drugiej strony, ból związany z wymaganiem od ludzi instalacji w foo-bar
miejscu, w którym mogą nie być, jest mniejszy niż ból związany z obchodzeniem zarządzania zależnością RPM, przynajmniej w mojej sytuacji. Tak więc, chyba że ktoś wymyśli sposób, aby właściwie wymagać „tego LUB tego” (co, moim zdaniem, byłoby świetną cechą w RPM), to planuję wymagać tylko, foo-bar
a następnie, w czasie wykonywania, jeśli bar-foo
jest dostępny, wybiorę pomiędzy je według dowolnych kryteriów, których potrzebuję.
AKTUALIZACJA: kolejny pomysł, który również oszukuje RPM, ale może doprowadzić do właściwego stanu. Może mógłbym, bezpośrednio %post
, majstrować przy bazie danych RPM. W ten sposób %pre
może chronić mnie przed nieprawidłową zainstalować i %post
będzie wstecznie RPM powiedzieć, że wymagają albo foo-bar
albo bar-foo
albo oba, w zależności od tego, co tam jest po zainstalowaniu.
Dzięki za sugestie!
Provides: foo-bar
, aby spełniało obie zależności. W przypadku nowszych wersji rpm sprawdź zależności logiczne . Trzymaj się z dala od %pre
i %post
sekcje, nie starają się pokonać system .