使用 CentOS 6.8,当我输入时yum install tcpdump
,系统输出:
Package 14:tcpdump-4.0.0-11.20090921gitdf3cb4.2.el6.x86_64 already installed and latest version
这一长段字符串没有帮助,为了获得更多信息,我输入了yum info tcpdump
,返回以下内容:
Name : tcpdump
Arch : x86_64
Epoch : 14
Version : 4.0.0
Release : 11.20090921gitdf3cb4.2.el6
Size : 818 k
Repo : installed
From repo : base
... bla bla ...
它将原始的包名字符串分成了几个字段,我感兴趣的是这两个字段:Epoch
Release
。
- 什么是
Epoch
? 一些信息但没有什么启发 Release
字段( )如何11.20090921gitdf3cb4.2.el6
命名?惯例是什么?
答案1
较长的阅读请参阅:https://fedoraproject.org/wiki/Packaging:Versioning
纪元很少使用。未定义时,它被设置为 0 并且不被打印。纪元用于弥补命名方面的差距。例如,上游有一个项目,foo
并且有版本 2009,他们突然决定更改版本,下一个版本将是 10。现在您的升级路径应该是从 foo-2009 到 foo-10,但 rpm 认为 foo-2009 > foo-10 并且不会升级它。因此维护者必须增加纪元,rpm 将比较 foo-2009 == 0:foo-2009 < 1:foo-10。
发布应该从 1 开始,每次发布新软件包时(但使用相同版本的相同 tar.gz),您都应该增加发布版本。这可以在安装后脚本中更改。运行时要求的更改。由于所需库的 ABI 更改而重建。或者因为维护者添加了补丁。通常修复一些安全原因。发布字段的格式不是标准化的,因此您只能猜测维护者为什么使用这种格式。事实上,您不需要猜测,因为您可以阅读 rpm 的更改日志,其中应该描述了更改。