web-dev-qa-db-ja.com

Debianパッケージのバージョンを比較する方法は?

私は見た python-aptおよびpython-debian、そしてそれらはパッケージバージョンを比較する機能を持っていないようです。自分で書く必要がありますか、それとも使用できるものはありますか?

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

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

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.VersionCompare 今です - apt_pkg.version_compare

41
unutbu

おそらくタイトルにPython(タグはありますが)が記載されていないため、Googleは同じ質問をしたが、bashの回答を期待して私をここに連れてきました。

$ 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

おそらく私は、より不格好な答えを得ることを期待して、別の質問でそれを行う方法を尋ねるべきでした。

51
Martin Dorey