我正在使用 Fedora 的 Copr 服务根据规范构建一个非数字版本的包包装:命名指南。
现在有两个成功构建的包:
纸张图标主题 1.0-1.20151202git954bb77
纸张图标主题 1.0-1.20151202gited30409
这两个中,第一个是较新的。
但是,当我做一个时dnf update
,包纸张图标主题-1.0-1.20151202gited30409已安装旧版本。我也在清理过期缓存后尝试过,但它给出了相同的结果。
我在这里做错了什么?是因为我命名包的方式吗?
答案1
简而言之,是的,这是因为你的包名称。
更具体地说,问题与 NVR 字符串有关,即名称、版本和发行版。排序算法相当复杂,但它会查找 version-release 值最高的包,并且该包被认为是最新的包。由于第二个包上的包发布字符串的最后一部分比第一个包更高(“ed30409”>“954bb77”),因此它认为第二个包更新。
答案2
比较算法首先检查 Epoch(通常为隐藏值,大多数包不使用),然后检查 Version,然后检查 Release。在每一个中,字母或数字的每个单独部分都被单独比较。这意味着您遵循的方案效果很好 -只要快照来自不同的日期。
但是,如果您仔细阅读“发布后包”,请注意,您应该每次都增加“版本号增量”,因此您的包应该是
纸张图标主题-1.0-2.20151202git954bb77
纸张图标主题-1.0-1.20151202gited30409
(强调已更改的“2”)。
当您执行 1.0 后的快照时,这个数字会持续上升——当版本本身增加时,会再次重置为 1。