tsh*_*ang 31 python debian apt
我看了看python-apt
,并python-debian
和他们似乎并不有功能比较软件包版本.我必须自己写,还是我可以使用?
理想情况下,它看起来像:
>>> v1 = apt.version("1:1.3.10-0.3")
>>> v2 = apt.version("1.3.4-1")
>>> v1 > v2
True
Run Code Online (Sandbox Code Playgroud)
Mar*_*rey 54
也许是因为标题没有提到Python(虽然标签有),谷歌在问同样的问题时把我带到了这里,但希望得到一个bash的答案.这似乎是:
$ dpkg --compare-versions 11a lt 100a && echo true
true
$ dpkg --compare-versions 11a gt 100a && echo true
$
Run Code Online (Sandbox Code Playgroud)
安装一个至少与lenny-backports版本一样新的rubygems版本,其方式不会给lenny和squeeze安装带来任何错误:
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
Run Code Online (Sandbox Code Playgroud)
也许我应该在一个单独的问题中询问如何做到这一点,希望得到一个不那么笨重的答案.
unu*_*tbu 41
你可以使用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')
Run Code Online (Sandbox Code Playgroud)
产量
version a > version b
Run Code Online (Sandbox Code Playgroud)
感谢Tshepang在评论中注意到新版本:apt.VersionCompare
现在apt_pkg.version_compare
.
python-debian
也可以做到这一点。它的使用方式几乎相同python-apt
:
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')
Run Code Online (Sandbox Code Playgroud)
输出:
version a > version b
Run Code Online (Sandbox Code Playgroud)