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