Кто-нибудь знает, как (или можно ли) указать альтернативное требование или набор требований в файле спецификации, в отличие от одного требования?
Например, скажем, есть два доступных пакета, с удобным названием foo-bar
и bar-foo
. Мой пакет требует одного из них, но не обоих, и мне все равно, какой из них присутствует. Во время выполнения я использую то, что доступно.
Так эффективно я хотел бы сказать:
Requires: foo-bar OR bar-foo
Насколько я могу судить, это невозможно, но я полагаю, что здесь есть люди, которые знают о RPM намного больше, чем я, поэтому, возможно, есть способ сделать это.
ОБНОВЛЕНИЕ: я только контролирую упаковку bar-foo
, не foo-bar
так, так что оба предоставляют виртуальный пакет не будет работать.
ОБНОВЛЕНИЕ: Что мне действительно нужно, так это виртуальный пакет внутри каждого из пакетов. Скажем, foo-bar provides eagle' and
bar-foo предоставляет beagle and my package works with either (or both); but other packages require either
eagle or
beagle or
foo-bar or
bar-foo`, и в целевой системе может быть установлен один или оба.
В настоящее время я склоняюсь к решению этого с помощью %pre
скрипта, который делает что-то вроде:
rpm -q eagle || rpm -q beagle || echo "need eagle or beagle" && /bin/false
Хотя я почти уверен, что это сработает, это похоже на жестокое обход отслеживания зависимостей RPM. Например, вы никогда не увидите мою посылку, когда спросите whatrequires foo-bar
или whatrequires beagle
.
ОБНОВЛЕНИЕ: если подумать, боль от необходимости устанавливать людей foo-bar
там, где они могут, не меньше, чем боль от обхода управления зависимостями RPM, по крайней мере, для моей ситуации. Так что, если кто-то не придумает способ должным образом потребовать «это ИЛИ» (что, я думаю, было бы отличной возможностью иметь в RPM в целом), тогда я планирую требовать только этого, foo-bar
а затем, во время выполнения, если bar-foo
доступно, я буду выбирать между их по любым критериям, которые мне нужны.
ОБНОВЛЕНИЕ: другая идея, которая также будет обманывать RPM, но может привести вещи в правильное состояние. Может быть, я мог бы %post
напрямую поиграть с базой данных RPM. Таким образом , %pre
может защитить меня от недопустимой установки, и %post
будет задним числом сказать RPM , что я требую либо foo-bar
или bar-foo
или оба, в зависимости от того, что там при установке.
Спасибо за предложения!
Provides: foo-bar
, чтобы он удовлетворял обеим зависимостям. Для более новых версий rpm проверьте Boolean Dependencies . Держитесь подальше от %pre
и %post
участков, не пытайтесь победить систему .