Redhat

yum upgrade 給出: … 嘗試安裝之間的衝突32-bitpackag和32−b一世噸p一種Cķ一種G和32-bit package和64-bitpackag和64−b一世噸p一種Cķ一種G和64-bit package

  • March 3, 2021

我們的 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更新時忽略某些包…

引用自:https://serverfault.com/questions/982611