Rhel

yum + 不更新已安裝的軟體包

  • April 25, 2022

我們正在嘗試安裝以下 rpm(實際上已經安裝)

rpm -qa | grep sshpass
sshpass-1.06-2.el7.x86_64


yum install sshpass-1.06-1.el7.x86_64.rpm
Loaded plugins: langpacks
Examining sshpass-1.06-1.el7.x86_64.rpm: sshpass-1.06-1.el7.x86_64
sshpass-1.06-1.el7.x86_64.rpm: does not update installed package.
Error: Nothing to do

echo $?
1

但它回來了exit code 1

為什麼 yum 不忽略已經安裝並返回錯誤的 rpm?

另一個例子

rpm -qa | grep figlet
figlet-2.2.5-9.el7.x86_64



yum install figlet-2.2.5-9.el7.x86_64.rpm
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
configuration
Examining figlet-2.2.5-9.el7.x86_64.rpm: figlet-2.2.5-9.el7.x86_64
figlet-2.2.5-9.el7.x86_64.rpm: does not update installed package.
Error: Nothing to do


echo $?
1

注意-我們也嘗試yum clean all

並刪除了/var/cache/yum/*

但無濟於事

我的印像是您在抱怨 yum 預設行為。

yum 充當安裝/刪除或升級軟體包的軟體包管理器。

如果存在Error: Nothing to do安裝/刪除或升級包的任務實際上失敗 - 因此返回程式碼 == 1。

如果您想檢查軟體包是否已安裝,如果沒有安裝,請嘗試以下操作:

rpm -qa | grep wget || yum -y install wget

這應該給你$?== 0 在標準情況下。

您正在嘗試安裝比您系統上已安裝的版本更早或版本相同的軟體包。yum在它執行之前檢查它,這就是為什麼當你嘗試將它與這些包一起使用時它會給出消息。否則,yum更新期間會做什麼?如果更新出現並且在其中一個儲存庫中可用,它會將它們都升級到最新版本並在系統上擁有兩個完全相同的軟體包嗎?

如果您需要舊版本的軟體,那麼您需要從原始碼編譯它,而不是使用yum它來安裝它的rpm.

引用自:https://unix.stackexchange.com/questions/598095