是否可以像这样设置依赖版本的要求:
Required: somepackage >= 0.5.0 AND somepackage < 0.6.0
所以只有部分包装0.5.x会自动安装。
是的,非常容易这样做。
只要写:
Requires: somepackage >= 0.5.0, somepackage < 0.6.0
到您的.spec文件。
添加版本要求
当一个软件包有更严格的需求时,可能需要某个软件包的某些版本。 所有这一切都需要添加所需的版本号,前面是以下比较运算符之一:
需要版本低于指定版本的软件包。
需要版本低于或等于指定版本的软件包。
需要与版本相同的软件包。
需要版本等于或大于指定版本的软件包。
需要使用大于指定版本的软件包。
继续我们的例子,假设所需的包栏版本实际上至less是2.7,并且baz包必须是2.1版 – 没有其他版本可以。 以下是需求标记行的样子:require:bar> = 2.7,baz = 2.1
来源: http : //rpm.org/user_doc/more_dependencies.html
上述系统适用于大多数包装。 然而,如果你想要的包是以不同名称的包(不相互冲突)作为[虚拟能力] [1]或以其他方式提供的(即“提供:”关键字)提供的,那么你最终可能会安装两个不同的软件包,每个软件包都可以单独满足您的一个要求。 例如,如果您的spec文件包含:
Requires: postgresql-server >= 8.4, postgresql-server < 9.0
可能会导致(如果你有这些包可用yum)安装:
但是不会安装postgresql84-server,这可能是您预期已经安装的软件包。
(在这种情况下,解决scheme只需要postgresql84-server;但是,可能有其他的例子没有一个简单的解决scheme。)
如果您正在尝试构build一个软件包或安装一个软件包并“限制”它的依赖关系,我不清楚。
如果不重build软件包,我看不到第二种情况。
您可以检索SRPM并编辑spec文件,并添加/修改条目Requires(您需要某些软件包0.5.x,不是吗?),如下所示:
Requires: somepackage = 0.5.0
然后重build
rpmbuild -bb -v yourpackage.spec
如果你从来没有这样做,它似乎吓倒,但它解决了你的问题。 请记住,如果正在为发行版创build公共包,则可能需要阅读其指导原则,因为通常不build议使用这种方式设置依赖关系。