首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何比较Debian包的版本?

如何比较Debian包的版本?
EN

Stack Overflow用户
提问于 2011-02-10 21:14:32
回答 4查看 16.6K关注 0票数 38

我看过python-aptpython-debian,它们似乎没有比较包版本的功能。我是不是必须自己写,或者有什么我可以用的?

理想情况下,它看起来如下所示:

代码语言:javascript
运行
复制
>>> v1 = apt.version("1:1.3.10-0.3")
>>> v2 = apt.version("1.3.4-1")
>>> v1 > v2
True
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-10 21:37:23

您可以使用apt_pkg.version_compare

代码语言:javascript
运行
复制
import apt_pkg
apt_pkg.init_system()

a = '1:1.3.10-0.3'
b = '1.3.4-1'
vc = apt_pkg.version_compare(a,b)
if vc > 0:
    print('version a > version b')
elif vc == 0:
    print('version a == version b')
elif vc < 0:
    print('version a < version b')        

收益率

代码语言:javascript
运行
复制
version a > version b

感谢Tshepang在评论中指出,对于较新的版本:apt.VersionCompare现在是apt_pkg.version_compare

票数 46
EN

Stack Overflow用户

发布于 2013-08-24 01:27:34

也许是因为标题没有提到Python (尽管标签提到了),谷歌在问同样的问题时把我带到了这里,但希望得到一个响亮的答案。这似乎是:

代码语言:javascript
运行
复制
$ dpkg --compare-versions 11a lt 100a && echo true
true
$ dpkg --compare-versions 11a gt 100a && echo true
$ 

要安装的rubygems版本至少与lenny-backports中的版本一样新,并且在lenny和squeeze安装上不会出现错误:

代码语言:javascript
运行
复制
sudo apt-get install rubygems &&
VERSION=`dpkg-query --show --showformat '${Version}' rubygems` &&
dpkg --compare-versions $VERSION lt 1.3.4-1~bpo50+1 &&
sudo apt-get install -t lenny-backports rubygems

也许我应该在一个单独的问题中询问如何做到这一点,希望得到一个不那么笨拙的答案。

票数 70
EN

Stack Overflow用户

发布于 2020-09-19 19:37:27

python-debian也可以做到这一点。它的使用方式与python-apt几乎相同

代码语言:javascript
运行
复制
from debian import debian_support 

a = '1:1.3.10-0.3'
b = '1.3.4-1'
vc = debian_support.version_compare(a,b)
if vc > 0:
    print('version a > version b')
elif vc == 0:
    print('version a == version b')
elif vc < 0:
    print('version a < version b')

输出:

代码语言:javascript
运行
复制
version a > version b
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4957514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档