我只是想弄清楚 RPM 如何识别某些软件包的最新版本。 假设我有:
package-0.1-SNAPSHOT201212031
package-0.2-SNAPSHOT201212030
rpm 管理器会将其作为字符串进行比较还是在其背后有更多逻辑? 或者另一个例子:它会识别 0.10.1 比 0.1.1 更新吗? (字符串比较在这里无济于事)。
最佳答案
唯一硬性规定是 RELEASE 字段中不能没有破折号。
考虑:
rpm -qi hwdata
其次是
$ rpm -q hwdata --queryformat '%10{NAME} %20{VERSION} %20{RELEASE} %20{ARCH}\n'
hwdata 0.213.22 1.el5 noarch
参见 The Release Tag本文档的部分以供引用发布标签规则。
注意:作为引用,如果没有 rpm-tag,有时我会以编程方式将内容填充到 rpm 描述中。在规范文件中。你的里程可能会有所不同,我不建议将此用于注定要返回社区的包裹,因为它很尴尬。只是指出它是一种解决方法,可以避免制动在 rpm 上运行的各种工具。
注意 2:在 RELEASE 字段中使用修订控制号是一种常见的做法。虽然这有点违反 rpm 约定。 (修改那个字段,意味着 specfile 改变了……而不是内容)这是一个方便使用的字段,因为它不会破坏任何 rpm 工具,并为您提供对内容版本的直接引用。另外...如果您已将 rpm 内容 checkin 修订控制系统,那么这已经有点超出 rpm 模型了。 IE。源 rpm 变得不必要了。
关于linux - 在 RPM 存储库中识别 RPM 包最新版本的过程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13694174/