`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 ビット バージョンに依存します。

gremlinsやなどの不安定なテスト リポジトリがありgalaxy-gremlins、 などのパッケージの新しいバージョンが提供されていますexpat。ただし、 リポジトリがないlib32-gremlinsため、それらのパッケージの 32 ビット版には同じ更新が適用されません。つまり、古い (安定した) パッケージがそのまま残ります。また、 などの安定した 32 ビット パッケージは、lib32-expat安定したリポジトリの 64 ビット版パッケージに依存しているため、システムを古いままにしておく (古い 32 ビット パッケージの依存関係を満たすため) か、新しい 64 ビット パッケージをインストールする (これにより、32 ビット パッケージの依存関係が壊れるため、そのようなパッケージをアンインストールすることによってのみ実行可能) かという競合が発生します。

あるいは、lib32-gremlinsリポジトリを有効にして、64 ビット テスト リポジトリ内のパッケージの 32 ビット バージョンを提供するか、すべてのテスト リポジトリを無効にすることができます。これらの 2 つのアクションのいずれかを実行すると、64 ビット リポジトリと 32 ビット リポジトリが同期され、利用可能な最新のパッケージで依存関係を解決できるようになります。

関連情報