Ubuntu dpkg版本号中的冒号(:)和破折号( - )是什么意思?

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版本格式的完整描述可以在deb-version(5)手册页中找到. (6认同)

Cir*_*四事件 6

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.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.4Debian 软件包的 Ubuntu 软件包的第 8 版。

这是因为 Ubuntu 以 Debian 为基础,但它也可以在上面添加其他更改。

0那里只是作为当Debian软件包没有一个数字,因为一个占位符debian_revision是可选的。

更多详细信息,请访问:https : //serverfault.com/questions/604541/debian-packages-version-convention/708569#708569