我无法使用“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 位存储库保持同步,并且可以解决依赖关系具有最新的可用软件包。

相关内容