目標是將檔案夾下的 rpm 串列與/tmp/list_of_rpms已安裝的 rpm 進行比較,如果軟體包安裝的版本較低,則列印此 rpm。
檢查是否安裝了 rpm 的方法可以很容易地驗證
rpm -qi gssproxy-0.7.0-30.el7_9.x86_64.rpm
package gssproxy-0.7.0-30.el7_9.x86_64.rpm is not installed
但實際上這個 rpm 以較低版本安裝為
rpm -qa | grep gssproxy
gssproxy-0.7.0-29.el7.x86_64
我們是否也可以識別 rpm 是否安裝了較低版本?
獲取已安裝的 rpmrpm -qa | grep gssproxy
然后/tmp/gssproxy-0.7.0-30.el7_9.x86_64.rpm通過正則運算式將其與 rpm 檔案進行比較的方法非常復雜。
uj5u.com熱心網友回復:
有一個專門rpmdev-vercmp用于比較 RPM 版本的工具。它是在 顯然在一個名為yum-utils包中。rpmdevtools.
未經測驗,但希望足以讓您入門:
for rpm in /tmp/list_of_rpms/*.rpm; do
base=${rpm#/tmp/list_of_rpms/}
pkg=${base%-*-*}
if installed=$(rpm -q "$base"); then
rpmdev-vercmp "$pkg" "$installed" >/dev/null 2>&1
case $? in 12) echo "$installed is less than $pkg";; esac
fi
done
這對根本沒有安裝的包沒有任何作用;也許您也想添加一個else子句并添加一個關于這些的通知?
https://www.golinuxhub.com/2018/06/how-to-compare-rpm-version-bash-script-python-linux-algorithm/的一些背景,但其中的實際代碼有問題。此外,https://unix.stackexchange.com/questions/163702/bash-script-to-verify-that-an-rpm-is-at-least-at-a-given-version
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524804.html
下一篇:根據索引排序的檔案行
