添加版本要求

添加版本要求

是否可以像这样设置依赖版本要求:

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

所以只有一些软件包 0.5.x将自动安装。

答案1

是的,非常容易做到。

写吧:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

放入您的.spec文件中。

添加版本要求

当软件包的要求稍微严格一些时,可能需要软件包的特定版本。只需添加所需的版本号,并在其前面加上以下比较运算符之一:

  • 需要版本低于指定版本的包。

  • 需要版本小于或等于指定版本的包。

  • 需要与指定版本相同的版本包。

  • 需要版本等于或高于指定版本的包。

  • 需要版本高于指定版本的包。

继续我们的例子,假设包 bar 所需的版本实际上至少需要 2.7,而包 baz 必须是 2.1 版本 — 其他版本都不行。requires 标记行如下所示:requires: bar >= 2.7, baz = 2.1

来源:http://rpm.org/user_doc/more_dependencies.html

警惕虚拟能力/提供

上面描述的系统适用于大多数软件包;但是,如果你需要的软件包是作为 [虚拟功能][1] 提供的,或者以其他方式提供(即“Provides: ”关键字),则不同的名称相同(彼此不冲突),那么你最终可能会安装两个不同的包,每个包单独满足你的一个要求。例如,如果你的 spec 文件包含:

Requires: postgresql-server >= 8.4, postgresql-server < 9.0

可能导致(如果你有这些包可供 yum 使用)安装:

  • postgresql-server 8.1.23-6.el5_8 (postgresql-server < 9.0)
  • postgresql92-server 9.2.5-1PGDG.rhel5(postgresql-server >= 8.4)

但会不是安装 postgresql84-server,这可能是您希望安装的软件包。

(在这种情况下,解决方案只是需要 postgresql84-server;但是,可能还有其他示例没有简单的解决方案。)

答案2

我不清楚您是否试图构建一个包或安装一个包并“限制”其依赖关系。

我看不出有什么办法可以在不重建包的情况下实现第二种情况。

您可以检索 SRPM 并编辑规范文件并添加/修改条目 Requires (您想要 somepackage 0.5.x,不是吗?) 到这样的内容:

Requires: somepackage = 0.5.0

然后重建

rpmbuild -bb -v yourpackage.spec

如果你从未这样做过,这看起来有点吓人,但它可以解决你的问题。请记住,如果你正在为发行版创建公共包,你可能需要阅读其指南,因为通常不建议以这种方式设置依赖项。

相关内容