RPM 包命名

RPM 包命名

我正在使用 Fedora 的 Copr 服务根据规范构建一个非数字版本的包包装:命名指南

现在有两个成功构建的包:

纸张图标主题 1.0-1.20151202git954bb77

纸张图标主题 1.0-1.20151202gited30409

这两个中,第一个是较新的。

但是,当我做一个时dnf update,包纸张图标主题-1.0-1.20151202gited30409已安装旧版本。我也在清理过期缓存后尝试过,但它给出了相同的结果。

我在这里做错了什么?是因为我命名包的方式吗?

链接到我的 Copr 版本

答案1

简而言之,是的,这是因为你的包名称。

更具体地说,问题与 NVR 字符串有关,即名称、版本和发行版。排序算法相当复杂,但它会查找 version-release 值最高的包,并且该包被认为是最新的包。由于第二个包上的包发布字符串的最后一部分比第一个包更高(“ed30409”>“954bb77”),因此它认为第二个包更新。

答案2

比较算法首先检查 Epoch(通常为隐藏值,大多数包不使用),然后检查 Version,然后检查 Release。在每一个中,字母或数字的每个单独部分都被单独比较。这意味着您遵循的方案效果很好 -只要快照来自不同的日期

但是,如果您仔细阅读“发布后包”,请注意,您应该每次都增加“版本号增量”,因此您的包应该是

纸张图标主题-1.0-2.20151202git954bb77

纸张图标主题-1.0-1.20151202gited30409

(强调已更改的“2”)。

当您执行 1.0 后的快照时,这个数字会持续上升——当版本本身增加时,会再次重置为 1。

相关内容