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-bari 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' andbar-foo zapewnia beagle and my package works with either (or both); but other packages require eithereagle orbeagle orfoo-bar orbar-foo`, a system docelowy może mieć zainstalowany jeden lub oba.
Obecnie skłaniam się do rozwiązania tego za pomocą %preskryptu, 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-barlub whatrequires beagle.
AKTUALIZACJA: Z drugiej strony, ból związany z wymaganiem od ludzi instalacji w foo-barmiejscu, 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-foojest 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 %premoże chronić mnie przed nieprawidłową zainstalować i %postbędzie wstecznie RPM powiedzieć, że wymagają albo foo-baralbo bar-fooalbo 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 %prei %postsekcje, nie starają się pokonać system .