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

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

嘗試更新我的系統時,出現錯誤:無法準備交易(無法滿足依賴關係)。

這就是我得到的:

~> 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是核心的一部分。

此時該怎麼辦?

答案1

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

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

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

相關內容