Pacman

我無法使用“pacman”更新我的系統

  • May 28, 2021

嘗試更新我的系統時,我收到錯誤消息:無法準備事務(無法滿足依賴項)。

這就是我得到的:

~> sudo pacman -Syu
:: Synchronising package databases...
gremlins is up to date
system is up to date
world is up to date
galaxy-gremlins is up to date
galaxy is up to date
lib32 is up to date
extra is up to date
community is up to date
multilib is up to date
:: Starting full system upgrade...
:: Replace libcanberra-pulse with gremlins/libcanberra? [Y/n] n
resolving dependencies...
looking for conflicting packages...
error: failed to prepare transaction (could not satisfy dependencies)
:: installing expat (2.4.1-1) breaks dependency 'expat=2.3.0' required by lib32-expat
:: installing libcap (2.50-1) breaks dependency 'libcap=2.49' required by lib32-libcap
:: installing libelf (0.185-1) breaks dependency 'libelf=0.184' required by lib32-libelf
:: installing libcanberra (0.30+2+gc0620e4-4) breaks dependency 'libcanberra=0.30+2+gc0620e4-3' required by libcanberra-pulse

然後我嘗試刪除包expat,但我收到消息:“注意:刪除列表中有禁止的包!”

我查看了這個網頁,但在這裡他們可以解除安裝有問題的包,而我不能,因為expat它是核心的一部分。

此時我該怎麼辦?

儲存庫中的包lib32是各種庫等的 32 位版本,依賴於相同版本的 64 位版本。

您擁有不穩定的測試儲存庫,例如gremlinsgalaxy-gremlins,它們提供更新版本的軟體包,例如expat. 但是您沒有lib32-gremlins儲存庫,因此您不會獲得與這些軟體包的 32 位對應版本相同的更新,即您可以繼續使用舊的(穩定的)軟體包。而且,由於穩定的 32 位軟體包lib32-expat依賴於來自穩定儲存庫的 64 位對應軟體包,因此存在衝突,因為您可以保持系統較舊(以滿足舊的 32 位軟體包依賴性),或者安裝較新的 64 位軟體包(這將破壞 32 位軟體包的依賴關係,這意味著您只能通過解除安裝此類軟體包來做到這一點)。

或者,您可以啟用lib32-gremlins儲存庫,它在 64 位測試儲存庫中提供 32 位版本的包,或禁用所有測試儲存庫 - 這兩個操作中的任何一個都將使您的 64 位和 32 位儲存庫同步並且依賴關係可解決最新可用的軟體包。

引用自:https://unix.stackexchange.com/questions/651614