Linux
如果是最新的,yum install local rpm 會拋出錯誤
從本地文件目錄安裝 rpm 包時,它第一次執行良好
sudo yum install packages/* -y --disablerepo=*
當作為自動化腳本的一部分第二次執行相同的東西時,它會引發錯誤(退出程式碼 1)
packages/package.rpm: does not update installed package. Error: Nothing to do
我可以執行 yum update(退出程式碼 0)
sudo yum update packages/* -y --disablerepo=* ... No packages marked for update
這樣做的問題是更新將跳過未安裝的軟體包。
如果這裡有任何真正的問題,我不想忽略退出程式碼,只想做
install-or-update
. 是否有rpm -i
等效的方法可以實現這一目標?請注意,這是在一組 rpm 軟體包上完成的,這些軟體包可能在任何時候都包含其他軟體包。我想一種選擇是在 shell 腳本中迭代它們並檢查它們是否已安裝,但是依賴解析可能會變得相當痛苦,聽起來確實像是重新發明了一輛自行車。
更新:
rpm --install
將根據失敗包的數量拋出退出程式碼。 https://www.redhat.com/archives/rpm-list/2005-July/msg00071.html
rpm --freshen
將忽略以前未安裝的任何 rpm,同時根本不提供任何輸出。
在我的系統(centos6,centos7)上,“yum localinstall”將返回程式碼 0,即使出現“錯誤:無事可做”消息,而“yum install”返回 1。
sudo yum localinstall packages/* -y --disablerepo=*
無論如何,您還可以檢查消息結果以將其作為自動化腳本中的“正常錯誤”忽略,例如使用 bash:
sudo yum install packages/* -y --disablerepo=* 2>&1 | tee /tmp/yum.output grep -q "Error: Nothing to do" /tmp/yum.output if [ $? -eq 0 ]; then ... code for no error else ... code for error fi