私は見た python-apt
およびpython-debian
、そしてそれらはパッケージバージョンを比較する機能を持っていないようです。自分で書く必要がありますか、それとも使用できるものはありますか?
理想的には、次のようになります。
>>> v1 = apt.version("1:1.3.10-0.3")
>>> v2 = apt.version("1.3.4-1")
>>> v1 > v2
True
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
。
おそらくタイトルに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
おそらく私は、より不格好な答えを得ることを期待して、別の質問でそれを行う方法を尋ねるべきでした。