Допустим, я упаковываю RPM, который требуетодиниз следующих,
Foo
Bar
Baz
Поддерживает ли RPM функцию помещения этого в файл спецификации?
решение1
Я собираюсь преобразовать комментарий Ларсена в ответ:
Начиная с версии rpm 4.13.0, rpm поддерживает логические выражения во всех зависимостях.https://rpm.org/user_doc/more_dependencies.html
Например:
Requires: (pkgA or (pkgB and pkgC))
В вашем случае это будет:
Requires: Foo or Bar or Baz
Наличие в rpm-4.13+ означает, что он доступен в RHEL 8 и всех последних Fedora.
Если вы хотите это в RHEL 7, то вы можете обойти это с помощью virtual provide. Вы можете указать:
Requires: some-server-capability
и затем в пакетах Foo, Bar, Baz нужно поместить:
Provides: some-server-capability
К сожалению, это требует модификации пакетов Foo, Bar и Baz. Если они не находятся под вашим контролем и вы используете RHEL 7 или старше, то вы обречены.
Обратите внимание, что некоторые пакеты уже используют этот виртуальный provide. Например, вы можете:
Requires: smtp-server
Requires: webserver
Например, веб-сервер предоставляется пакетами httpd, nginx или lightttpd.