是否可以像这样设置依赖版本要求:
Required: somepackage >= 0.5.0 AND somepackage < 0.6.0
Run Code Online (Sandbox Code Playgroud)
所以只有somepackage 0.5.x会自动安装。
Mik*_*eyB 21
是的,这样做很容易。
写就好了:
Requires: somepackage >= 0.5.0, somepackage < 0.6.0
Run Code Online (Sandbox Code Playgroud)
进入你的.spec
档案。
添加版本要求
当一个包有更严格的需求时,可能需要一个包的某些版本。所需要做的就是添加所需的版本号,前面是以下比较运算符之一:
需要版本低于指定版本的包。
需要版本小于或等于指定版本的包。
需要版本与指定版本相同的包。
需要版本等于或大于指定版本的包。
需要版本高于指定版本的包。
继续我们的例子,让我们假设所需的包 bar 版本实际上至少需要 2.7,而 baz 包必须是版本 2.1——没有其他版本可以做到。下面是 requires 标记行的样子: requires: bar >= 2.7, baz = 2.1
来源:http : //rpm.org/user_doc/more_dependencies.html
上述系统适用于大多数软件包;但是,如果您想要的包是作为 [虚拟功能][1] 提供的,或者是由不同名称的包(彼此不冲突)以其他方式提供的(即“提供:”关键字),那么您最终可能会安装两个不同的软件包,每个软件包都单独满足您的一项要求。例如,如果您的规范文件包含:
Requires: postgresql-server >= 8.4, postgresql-server < 9.0
Run Code Online (Sandbox Code Playgroud)
可能会导致(如果您有这些软件包可用于 yum)安装:
但不会安装 postgresql84-server,这可能是您希望安装的软件包。
(在这种情况下,解决方案只是需要 postgresql84-server;但是,可能还有其他示例没有简单的解决方案。)
我不清楚您是否正在尝试构建包或安装包并“限制”其依赖项。
我没有找到一种方法可以在不重建软件包的情况下实现第二种情况。
您可以检索 SRPM 并编辑规范文件,并将条目 Requires 添加/修改(您想要 somepackage 0.5.x ,不是吗?),如下所示:
Requires: somepackage = 0.5.0
Run Code Online (Sandbox Code Playgroud)
然后重建
rpmbuild -bb -v yourpackage.spec
Run Code Online (Sandbox Code Playgroud)
如果您从未这样做过,它看起来很吓人,但它解决了您的问题。请记住,如果要为发行版创建公共包,您可能需要阅读其指南,因为通常不建议以这种方式设置依赖关系。
归档时间: |
|
查看次数: |
16698 次 |
最近记录: |