如何比较 Debian 软件包版本?
我查看了 python-apt 和 python-debian,它们似乎没有比较软件包版本的功能。我必须自己写吗,还是有什么我可以使用的?
理想情况下,它看起来像:
>>> v1 = apt.version("1:1.3.10-0.3")
>>> v2 = apt.version("1.3.4-1")
>>> v1 > v2
True
I looked at python-apt
and python-debian
, and they don't seem to have functionality to compare package versions. Do I have to write my own, or is there something I can use?
Ideally, it would look something like:
>>> v1 = apt.version("1:1.3.10-0.3")
>>> v2 = apt.version("1.3.4-1")
>>> v1 > v2
True
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
也许是因为标题没有提到Python(尽管标签提到了),当谷歌问同样的问题但希望得到一个bash答案时,谷歌把我带到了这里。这似乎是:
要安装至少与 lenny-backports 版本一样新的 rubygems 版本,并且在 lenny 和挤压安装上不会出现错误:
也许我应该在一个单独的问题中询问如何做到这一点,希望得到一个不那么笨拙的答案。
Perhaps because the title doesn't mention Python (though the tags do), Google brought me here when asking the same question but hoping for a bash answer. That seems to be:
To install a version of rubygems that's at least as new as the version from lenny-backports in a way that gives no errors on lenny and squeeze installations:
Perhaps I should have asked how to do that in a separate question, in the hope of getting a less clunky answer.
您可以使用 apt_pkg.version_compare :
感谢
Tshepang 在评论中指出
对于较新版本:
apt.VersionCompare
现在是apt_pkg.version_compare
。You could use apt_pkg.version_compare:
yields
Thanks to Tshepang for noting in the comments that
for newer versions:
apt.VersionCompare
is nowapt_pkg.version_compare
.python-debian
也可以做到这一点。它的使用方式与 python-apt 几乎相同:输出:
python-debian
can do this too. It's used in an almost identical way topython-apt
:ouput:
正如您已经提到的
python-apt
和python-debian
,但现在已经是 2022 年了,Python 2.7 已终止,这是基于 Debian 的系统的 Python 3 代码,您已在其中安装了python3-debian:
如果安装了
python3-debian
将自动使用python3-apt
中更高效的版本。但您也可以通过从apt
导入Version
来显式使用它:As you already mentioned
python-apt
andpython-debian
, but it is 2022 by now and Python 2.7 is end-of-life, here's the Python 3 code for a Debian based system, where you have installedpython3-debian
:python3-debian
will automatically used the more efficient version frompython3-apt
if it is installed. But you also can use it explicitly by importingVersion
fromapt
: