システムを更新しようとすると、次のエラーが発生します。トランザクションを準備できません(依存関係を満たすことができません)。
これが私が得るものです:
~> 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
「注意:削除リストに禁止されているパッケージがあります!」というメッセージが表示されました。
私はこれを見たWebページexpat
しかし、ここでは問題のあるパッケージを削除できますが、私はそれがコアの一部であるため削除できません。
この時点でどうすればよいですか?
答え1
リポジトリのパッケージは、lib32
同じバージョンの64ビットバージョンに依存するさまざまなライブラリなどの32ビットバージョンです。
などの不安定なテストリポジトリがあり、などのgremlins
最新galaxy-gremlins
バージョンのパッケージを提供しますが、リポジトリがexpat
ないため、lib32-gremlins
そのパッケージの32ビットバージョンに対して同じアップデートを取得できません。つまり、以前のパッケージを確実に維持できます。パッケージ。そして、信頼性の高い32ビットパッケージは信頼性の高いリポジトリのlib32-expat
64ビットパッケージに依存するため、システムを以前のバージョンに保つか(以前の32ビットパッケージの依存関係を満たすために)最新の64ビットパッケージをインストールできるため、競合が発生します。 (これを行うと、32ビットパッケージの依存関係が壊れます。つまり、そのパッケージを削除する必要があります。)
または、lib32-gremlins
64ビットテストストアで32ビットバージョンのパッケージを提供するストレージを有効にするか、すべてのテストストアを無効にすることもできます。これらの操作のいずれかを実行すると、64ビットと32ビットのストレージが同期と依存関係を維持します。利用可能な最新のパッケージで解決できます。