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-vercmp
fromrpmdevtools
パッケージは同様の機能を提供しますが、指定された演算子をサポートしません。バージョンが同じ場合は0を返し、バージョン1が最新の場合は11を、バージョン2が最新の場合は12を返します。
$ rpmdev-vercmp 1.12 1.13
1.12 < 1.13
$ echo $?
12
Fedoraにdpkgをインストールすることもできます。プライマリリポジトリで利用可能。しかし、単にバージョン比較のためにdpkgをインストールするのは多少無理かもしれません。