Кто-нибудь знает, как (или можно ли) указать альтернативное требование или набор требований в файле спецификации, в отличие от одного требования?
Например, скажем, есть два доступных пакета, с удобным названием foo-barи bar-foo. Мой пакет требует одного из них, но не обоих, и мне все равно, какой из них присутствует. Во время выполнения я использую то, что доступно.
Так эффективно я хотел бы сказать:
Requires: foo-bar OR bar-foo
Насколько я могу судить, это невозможно, но я полагаю, что здесь есть люди, которые знают о RPM намного больше, чем я, поэтому, возможно, есть способ сделать это.
ОБНОВЛЕНИЕ: я только контролирую упаковку bar-foo, не foo-barтак, так что оба предоставляют виртуальный пакет не будет работать.
ОБНОВЛЕНИЕ: Что мне действительно нужно, так это виртуальный пакет внутри каждого из пакетов. Скажем, foo-bar provides eagle' andbar-foo предоставляет beagle and my package works with either (or both); but other packages require eithereagle orbeagle orfoo-bar orbar-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участков, не пытайтесь победить систему .