Centos
yum remove 不是冪等的
在一些 Centos 虛擬機上,我有一些 MySQL 包要刪除(通過 yum),然後安裝 MariaDB(通過 rpm),所有這些都在一個 shell 腳本中。我使用 yum 進行刪除:
yum remove -y mysql-community-client yum remove -y mysql-community-release yum remove -y mysql-community-libs yum remove -y mysql-community-common
現在,在某些虛擬機上,可能沒有安裝客戶端軟體包,所以 yum 說:
No Match for argument: mysql-community-client Determining fastest mirrors Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=stock error was 14: PYCURL ERROR 7 - "couldn't connect to host"
我知道連接失敗是因為我們的防火牆等等。
我的問題是:
可以告訴百勝忽略失去的包裹嗎?
或者至少只是失敗了
No Match for argument
,沒有連接到鏡像等?問題標題是指
yum remove -y mysql-community-client
後面yum remove -y mysql-community-client
會使其連接到鏡像的事實,而我希望它說“已解除安裝軟體包”,然後是“已解除安裝軟體包”。重新表述問題:問題不在於 RPM(我只提到了我的問題的完整性),問題在於 yum。
yum remove X
將刪除 X,如果它已安裝。如果未安裝,它將在我想避免的鏡像中搜尋。我想讓 yum 說“X 未安裝”並退出。
我們可以長時間討論 yum 的行為或應該如何行為,但長話短說:
yum --cacheonly remove -y mysql-community-client
是你可能想要的。
如果我理解正確,您想阻止網路訪問,禁用外掛並僅解除安裝
mysql-community
目前安裝的那些軟體包。那麼怎麼樣yum --disablerepo="*" --noplugins remove "*mysql-community*" -y
並且只會匹配 glob 匹配的任何已安裝包
"*mysql-community*"
。雖然總的來說,我個人永遠不會將-y
flag 與remove
.如果您只想選擇性地解除安裝已安裝的特定軟體包,那麼Thomas 的答案正是您所需要的。