linux - 在 RPM 存储库中识别 RPM 包最新版本的过程是什么?

标签 linux redhat rpm

我只是想弄清楚 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/

相关文章:

linux - centos 7 发行版的理想 puppet 存储库

python -/usr/bin/python3.3 在模拟构建期间未从 brp-scl-python-bytecompile 中找到

linux - 如何在 UNIX 中将文本文件转换为小写(但在 UTF-8 中)

php - $_FILES 空 - 撕扯我的头发

linux - libcouchbase 未安装在 Redhat Enterprise Linux Server 6.6 版上

docker - OpenShift 和持久性 Redis 配置

fedora - RPM 安装期间 Chkconfig 冲突

sql-server - 添加供应商 MSSQL Linux

linux - iptables 端口转发在重启后不会持续存在

mysql - 怎么修? : mysql> show variables like 'plugin_dir' ; Does not show plugin_dir location