deb 包的版本号组成如下:[epoch:]upstream_version[-debian_revision]
Ubuntu 下面没有找到类似 rpm -qa
的查看当前已安装的包的原始文件名的工具,所有的工具都显示的是解析后的包信息,因此不是很确定 epoch
字段会不会出现在原始的 deb 安装包文件名中,但是理论上应该是和 rpm 包一样,epoch
只是一个属性值,一般不直接体现在原始的安装包文件名中。
安装包 name
、version
、arch
以下划线作为分隔,其中 upstream_version
与 debian_revision
以最后一个中划线作为分隔,以如下所示的安装包为例:
1 | ceph-common_14.0.1-747-gc89e071-1bionic_amd64.deb |
版本号的比较有 python 和 shell 两种方式:
1 | import apt_pkg |
1 | ~$ dpkg --compare-versions 12.2.9-1ubuntu lt 12.2.9-1+ubuntu && echo true |
参考资料
Debian Policy Manual
https://www.debian.org/doc/debian-policy/ch-controlfields.html#version
Python: How to compare Debian package versions
https://stackoverflow.com/questions/4957514/python-how-to-compare-debian-package-versions
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.