相当于“dpkg --compare-versions ...”的 RPM 是多少?

相当于“dpkg --compare-versions ...”的 RPM 是多少?

Debian 提供了一种使用命令来比较 Debian 兼容版本的方法,dpkg如下所示:

dpkg --compare-versions <version> <operator> <version>

例如,如果你想知道给定的版本是否在 1.0 之前,那么你可以使用:

# gather VERSION from somewhere...
VERSION=0.9

if dpkg --compare-versions "${VERSION}" lt 1.0
then
    echo "unacceptable version as per policy"
    exit 1
fi

基于 RPM(RedHat/Fedora)系统下的等效命令是什么?

答案1

转速 >= 4.16.0:

$ rpm --eval "%{lua:print(rpm.vercmp('1.2-1', '2.0-1'))}"
-1

(rpm >= 4.7.0 仅比较零件,不完整的 Epoch:Version-Release 字符串)

对于 OpenSUSE,还有zypper vcmp

$ zypper vcmp 0.9.5+git20190908+3abfab2-150300.7.5.1 0.9.5~git20210406.e554475-150400.3.5.1
0.9.5+git20190908+3abfab2-150300.7.5.1 is newer than 0.9.5~git20210406.e554475-150400.3.5.1

答案2

rpmdev-vercmpfrom rpmdevtoolspackage 提供了类似的功能,但不支持指定运算符,如果版本相等则返回 0,如果 version1 较新则返回 11,如果 version2 较新则返回 12。

$ rpmdev-vercmp 1.12 1.13
1.12 < 1.13
$ echo $?
12

您还可以在 Fedora 中安装 dpkg,它在默认存储库中可用。但仅仅为了版本比较而安装 dpkg 可能有点太多了。

相关内容