yum upgrade 給出: … 嘗試安裝之間的衝突32-bitpackag和32−b一世噸p一種Cķ一種G和32-bit package和64-bitpackag和64−b一世噸p一種Cķ一種G和64-bit package
我們的 Red Hat 7.6 機器安裝了 64 位和 32 位庫。
我正在為我們所有的機器編寫更新腳本,以使用我們的安裝後腳本執行以升級所有已安裝的軟體包。
yum -y upgrade
返回很多這樣的錯誤:
printers.pyc conflicts between libstdc++.i686 and libstdc++.x86_64
我在每台機器上都有很多這樣的錯誤。每台機器都不一樣。我不能只解除安裝 32 位衝突包,升級然後重新安裝 32 位包。太多了。
我試過
yum upgrade -x '*.i686'
了:無濟於事。我怎樣才能集體克服這些錯誤?
更新:
這是錯誤消息之一。
事務檢查錯誤:
文件 */path/to/file/*printers.pyc 在嘗試安裝 libstdc++-4.8.5-36.el7_6.2.i686 和 libstdc++-4.8.5-36.el7_6.2.x86_64 之間發生衝突
請注意,我為 32 位和 64 位軟體包提供了相同的版本。
yum provides printers.pyc
返回已安裝的 32 位和 64 位軟體包:libstdc++-4.8.5-36.el7.i686 和 libstdc++-4.8.5-36.el7.x86_64
每台機器都不一樣。我不能只解除安裝 32 位 libstdc++ 並“稱其為好”。另一台機器會有不同的衝突。
我需要編寫腳本。我必須處理整套已安裝的 RPM,並且只需解除安裝一些 onsie-twosie 軟體包。
是否可以先只升級 64 位軟體包,然後升級 32s?那會有幫助嗎?
這很醜陋。我必須列出所有有衝突的包。通過強制和無依賴關係刪除 32 位包。
接下來,我必須升級所有 64 位軟體包。
之後,我可以重新安裝 32 位軟體包。
不知何故,我們的啟動過程搞砸了。當我們升級到下一個版本的 Red Hat 時,我們使用了不同的 kickstart 映像和安裝後腳本。這解決了未來的問題。
我們仍然不知道它最初是如何搞砸的。
yum
希望這些庫版本匹配。libstdc++
例如,對於 32 位和 64 位,必須使用完全相同的版本號進行安裝。您刪除 32 位版本然後重新安裝它們的提議將行不通;
yum
如果它們與完全相同的版本號不匹配,則不允許您重新安裝這些 32 位版本。發生的情況是,您的儲存庫中可能有可用的更新,
libstdc++.x86_64
而不是可用的更新libstdc++.i686
。有多種策略可以解決這個問題:
- 嘗試解除安裝您的 32 位軟體包(如 @MichaelHampton 建議的那樣)
- 調查為什麼您沒有可用於兩個版本的升級(啟用/禁用儲存庫)
- 告訴
yum
更新時忽略某些包…