假設我正在打包一個 RPM,它需要一以下的,
Foo
Bar
Baz
RPM 是否支援將其放入規格文件的功能?
答案1
我將把拉森評論轉換成答案:
從 rpm 4.13.0 開始,rpm 支援所有相依性中的布林表達式。https://rpm.org/user_doc/more_dependency.html
例如:
Requires: (pkgA or (pkgB and pkgC))
在你的情況下,這將是:
Requires: Foo or Bar or Baz
rpm-4.13+ 中的可用性意味著它可以在 RHEL 8 和所有最新的 Fedora 中使用。
如果您希望在 RHEL 7 中實現此目的,則可以使用虛擬提供來解決此問題。您可以指定:
Requires: some-server-capability
然後在 Foo、Bar、Baz 包中你必須放在那裡:
Provides: some-server-capability
不幸的是,這需要修改 Foo、Bar 和 Baz 套件。如果它們不受您的控制並且您使用的是 RHEL 7 或更早版本,那麼您就注定失敗。
請注意,某些軟體包已經使用此虛擬提供。例如,您可以:
Requires: smtp-server
Requires: webserver
例如,Web 伺服器由 httpd、nginx 或 lightttpd 套件提供。