And*_*y J 26 linux ubuntu debian dependencies dpkg
我正在尝试获取已安装软件包的版本号,以便为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
Run Code Online (Sandbox Code Playgroud)
我的问题是; 冒号(:)在版本号中是什么意思,-0ubuntu最终意味着什么?
Ign*_*ams 36
之前的数字:是时代.这会覆盖版本以进行订购,例如3:3.1被认为比2:3.2更新.当包装商因各种原因需要降低回购包中的包时使用它.
之后的数(值,真的)-是释放.它区分具有相同版本的软件包的不同版本.它用于例如现有版本软件的安全补丁.
Debian 政策手册
这两者都包含在:https : //www.debian.org/doc/debian-policy/#version 中,也转载于:
man deb-version
Run Code Online (Sandbox Code Playgroud)
这些手册说完整的格式是:
[epoch:]upstream_version[-debian_revision]
Run Code Online (Sandbox Code Playgroud)
epoch
手册上说:
提供它是为了允许保留旧版本包的版本号错误,以及包的先前版本编号方案。
例如,假设原始包有版本:
2019.12019.21.2 (原包决定随机更改发布命名方案)1.3然后 Debian 将它们视为:
0:2019.1(俗称,2019.1因为前导0:可以省略)0:2019.21: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.4Debian 软件包的 Ubuntu 软件包的第 8 版。
这是因为 Ubuntu 以 Debian 为基础,但它也可以在上面添加其他更改。
在0那里只是作为当Debian软件包没有一个数字,因为一个占位符debian_revision是可选的。
更多详细信息,请访问:https : //serverfault.com/questions/604541/debian-packages-version-convention/708569#708569