我正在尝试获取已安装软件包的版本号,以便为 dpkg 构建依赖项列表。
如果我在终端中输入“dpkg -l | grep libqtcore4”,我会得到以下结果:
ii libqtgui4 4:4.7.4-0ubuntu8 Qt 4 GUI module
ii libqtgui4:i386 4:4.7.4-0ubuntu8 Qt 4 GUI module
我的问题是;版本号中的冒号 (:) 到底是什么意思,-0ubuntu 到底是什么意思?
我正在尝试获取已安装软件包的版本号,以便为 dpkg 构建依赖项列表。
如果我在终端中输入“dpkg -l | grep libqtcore4”,我会得到以下结果:
ii libqtgui4 4:4.7.4-0ubuntu8 Qt 4 GUI module
ii libqtgui4:i386 4:4.7.4-0ubuntu8 Qt 4 GUI module
我的问题是;版本号中的冒号 (:) 到底是什么意思,-0ubuntu 到底是什么意思?
之前的数字:
是纪元。这会覆盖用于订购目的的版本,例如 3:3.1 被认为比 2:3.2 更新。当打包程序出于各种原因需要降级存储库中的包时使用它。
之后的数字(实际上是值)-
是release。它区分具有相同版本的包的不同版本。它用于例如对现有软件版本的安全补丁。
Debian 政策手册
这两个都包含在:https ://www.debian.org/doc/debian-policy/#version中,也转载于:
man deb-version
这些手册说完整的格式是:
[epoch:]upstream_version[-debian_revision]
epoch
手册说:
提供它是为了允许遗留软件包旧版本的版本号以及软件包以前的版本编号方案中的错误。
例如,假设原始包有版本:
2019.1
2019.2
1.2
(原包决定随机更改发布命名方案)1.3
然后 Debian 将它们视为:
0:2019.1
(俗称2019.1
因为前导0:
可以省略)0:2019.2
1:1.2
(Debian 将 epoch 从 0 提升到 1 以应对新的命名方案)1:1.3
这样,我们仍然可以从包版本字符串中清楚地知道版本顺序,或者如果原始包在新方案中实际重用旧名称版本的主要罪恶,则可以完全区分它们。
您能想象 Debian 开发人员必须适应的地狱般的事物类型吗?:-)
debian_revision
手册说:
这部分版本号根据上游版本指定Debian包的版本
由于 Debian 软件包本身在软件源代码本身之上使用的构建脚本/补丁的更改,Debian 需要 Debian 修订版。
-ubuntuY
Ubuntu 还可以添加一个-ubuntuY
后缀来说明 Ubuntu 包装上对 Debian 包装所做的更改。
例如,4:4.7.4-0ubuntu8
表示这是基于4:4.7.4
Debian 软件包的 Ubuntu 软件包的第 8 版。
这是因为 Ubuntu 以 Debian 为基础,但它也可以在上面添加额外的更改。
当0
Debian 软件包没有数字时,there 只是作为一个占位符,因为debian_revision
是可选的。
更多详情请访问:https ://serverfault.com/questions/604541/debian-packages-version-convention/708569#708569