Хтось знає, як (або чи можна) вказати альтернативну вимогу або набір вимог у специфікаційному файлі на відміну від однієї вимоги?
Наприклад, скажімо, що доступні два пакети, зручно названі foo-bar
та bar-foo
. Мій пакунок вимагає одного з цих, але не обох, і мені все одно, який з них є. Під час виконання я використовую те, що є в наявності.
Настільки ефективно я хотів би сказати:
Requires: foo-bar OR bar-foo
Наскільки я можу сказати, це неможливо, але я вважаю, що тут є люди, які знають про RPM набагато більше, ніж я, тому, можливо, є спосіб це зробити.
ОНОВЛЕННЯ: Я контролюю лише упаковку bar-foo
, ні foo-bar
, тому надання обох віртуальних пакетів не буде працювати.
ОНОВЛЕННЯ: Те, що мені насправді потрібно, - це сам віртуальний пакет у кожному з пакетів. Скажімо, foo-bar provides eagle' and
bar-foo забезпечує бігль- and my package works with either (or both); but other packages require either
орел 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, перевірте булеві залежності . Тримайтеся подалі від %pre
і %post
ділянок, не намагайтеся перемогти систему .