Odpowiedzi:
Tak, bardzo łatwo to zrobić.
Tylko napisz:
Requires: somepackage >= 0.5.0, somepackage < 0.6.0
do twojego .spec
pliku.
Dodawanie wymagań wersji
Gdy pakiet ma nieco bardziej rygorystyczne potrzeby, można wymagać pewnych wersji pakietu. Wystarczy dodać żądany numer wersji, poprzedzony jednym z następujących operatorów porównania:
Wymaga pakietu z wersją mniejszą niż określona wersja.
Wymaga pakietu o wersji mniejszej lub równej podanej wersji.
Wymaga pakietu o wersji równej określonej wersji.
Wymaga pakietu o wersji równej lub większej niż określona wersja.
Wymaga pakietu o wersji większej niż podana.
Kontynuując nasz przykład, załóżmy, że wymagana wersja paska pakietu musi w rzeczywistości wynosić co najmniej 2.7, a pakiet baz musi mieć wersję 2.1 - żadna inna wersja tego nie zrobi. Oto jak powinna wyglądać wymagana linia znaczników: wymaga: bar> = 2.7, baz = 2.1
Źródło: http://rpm.org/user_doc/more_dependencies.html
System opisany powyżej działa dla większości pakietów; jeśli jednak pakiet, którego chcesz wymagać, jest dostarczany jako [funkcja wirtualna] [1] lub w inny sposób (tzn. słowo kluczowe „Zapewnia:”) w pakietach o różnych nazwach (które nie powodują konfliktów), wówczas może skończyć się zainstalowaniem dwóch różnych pakietów, z których każdy indywidualnie spełnia jedno z twoich wymagań. Na przykład jeśli plik specyfikacji zawiera:
Requires: postgresql-server >= 8.4, postgresql-server < 9.0
Może spowodować (jeśli masz te pakiety do dyspozycji) instalację:
Ale nie zainstaluje postgresql84-server, który prawdopodobnie jest pakietem, którego można się spodziewać.
(W tym przypadku rozwiązaniem byłoby po prostu wymaganie serwera postgresql84; istnieją jednak inne przykłady, które nie mają łatwego rozwiązania).
Nie jest dla mnie jasne, czy próbujesz zbudować pakiet lub zainstalować pakiet i „ograniczyć” jego zależności.
Nie widzę sposobu na zrobienie drugiego przypadku bez przebudowania pakietu.
Możesz pobrać plik SRPM i edytować plik specyfikacji oraz dodać / zmodyfikować wpis Wymaga (chcesz pakietu 0.5.x, prawda?) Do czegoś takiego:
Requires: somepackage = 0.5.0
a następnie odbuduj za pomocą
rpmbuild -bb -v yourpackage.spec
Jeśli nigdy tego nie zrobiłeś, wydaje się on zastraszający, ale rozwiązuje twój problem. Pamiętaj, że jeśli tworzysz pakiet publiczny dla dystrybucji, możesz przeczytać jego wytyczne, ponieważ ustawianie zależności w ten sposób zasadniczo nie jest zalecane.