Answers:
是的,这样做很容易。
写吧:
Requires: somepackage >= 0.5.0, somepackage < 0.6.0
到您的.spec
文件中。
添加版本要求
当某个软件包的需求更加严格时,可能需要某些版本的软件包。所需要做的就是添加所需的版本号,然后添加以下比较运算符之一:
需要版本低于指定版本的软件包。
要求软件包的版本小于或等于指定的版本。
需要版本等于指定版本的软件包。
需要版本等于或大于指定版本的软件包。
需要版本大于指定版本的软件包。
继续我们的示例,让我们假设所需的package bar版本实际上必须至少为2.7,并且baz软件包必须为2.1版-没有其他版本可以使用。这是require标签行的样子:require:bar> = 2.7,baz = 2.1
资料来源:http : //rpm.org/user_doc/more_dependencies.html
上述系统适用于大多数包装;但是,如果您要提供的软件包是[虚拟功能] [1]提供的,或者是由其他名称(互不冲突)的软件包提供的(即“ Provides:”关键字),则您可能最终会安装两个不同的软件包,每个软件包分别满足您的要求之一。例如,如果您的规范文件包含:
Requires: postgresql-server >= 8.4, postgresql-server < 9.0
可能会导致(如果您有可用的yum这些软件包)安装:
但是不会安装postgresql84-server,这可能是您期望安装的软件包。
(在这种情况下,解决方案将只是需要postgresql84-server;但是,可能还有其他示例没有简单的解决方案。)
对于我来说,尚不清楚是要构建软件包还是安装软件包并“限制”其依赖关系。
我没有一种方法可以在不重建软件包的情况下制作出第二种情况。
您可以检索SRPM并编辑规范文件,并添加/修改Requires条目(您需要0.5.x软件包,对吗?),如下所示:
Requires: somepackage = 0.5.0
然后用
rpmbuild -bb -v yourpackage.spec
如果您从未这样做过,它看上去会令人生畏,但它可以解决您的问题。请记住,如果要为发行版创建公共包,则可能需要阅读其指南,因为通常不建议使用这种方式设置依赖项。