Rhel
yum + 不更新已安裝的軟體包
我們正在嘗試安裝以下 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
.