モジュール Python:Debianパッケージのバージョンを比較する方法



python バージョン 切り替え (2)

おそらくタイトルにはPythonは言及されていない(タグではあるが)ので、同じ質問をしながらbashの回答を望むときにGoogleが私をここに連れて来たのだろう。 それはそうです:

$ dpkg --compare-versions 11a lt 100a && echo true
true
$ dpkg --compare-versions 11a gt 100a && echo true
$ 

lennyとsqueezeのインストールでエラーが発生しないように、少なくともlenny-backportsのバージョンと同じくらい新しいバージョンのrubygemsをインストールするには:

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

おそらく、私は別の質問でこれを行う方法を尋ねたはずです。

私はpython-aptとpython-debianを見ましたが、パッケージのバージョンを比較する機能はないようです。 私は自分自身を書かなければならないのですか、それとも私が使うことができるものはありますか?

理想的には、次のようになります。

>>> v1 = apt.version("1:1.3.10-0.3")
>>> v2 = apt.version("1.3.4-1")
>>> v1 > v2
True

Answer #1

あなたはapt_pkg.version_compare使うことができます:

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')        

収量

version a > version b

Tshepangのおかげで、新しいバージョンのコメント: apt.VersionCompareapt_pkg.version_compare





apt