有没有一种方法可以指定组中任何人都可以满足需求的依赖关系?

有没有一种方法可以指定组中任何人都可以满足需求的依赖关系?

假设我正在打包一个 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 包提供。

相关内容