【msys2】「エラー: 処理の準備に失敗しました (依存関係を解決できませんでした)」対応

スポンサーリンク

以前の記事で紹介した、Windows上のコンソール環境「msys2」を使っている。

msys2でWindows上でのビルド環境をつくる(msys2のインストール)
GNU makeやコンパイラが動かせる環境を、Windows上にmsys2をインストールしてつくる。 Unixのbashライクなコマンドラインが使えるようになるソフトだが、このようなソフトは、他にはCygwinやMinGWなどがある。msy...

今回、いつものように「pacman -Syu」でアップデート実行したら、「エラー: 処理の準備に失敗しました (依存関係を解決できませんでした)」エラーが出た。対応について備忘録を残す。

エラー状況

msys2で「pacman -Syu」コマンド実行したら、下記のエラーが発生。

$ pacman -Syu
:: パッケージデータベースの同期中...
 mingw32                  544.5 KiB   868K/s 00:01 [#####################] 100%
 mingw32.sig              119.0   B  0.00B/s 00:00 [#####################] 100%
 mingw64                  545.7 KiB  2.83M/s 00:00 [#####################] 100%
 mingw64.sig              119.0   B   116K/s 00:00 [#####################] 100%
 msys は最新です
:: Starting core system upgrade...
 何も行うことがありません
:: システム全体の更新を開始...
警告: grep: ローカル (3.1-1) のほうが msys よりも最新です (3.0-2)
警告: libgc: ローカル (8.0.0-1) のほうが msys よりも最新です (7.6.8-1)
警告: mingw-w64-i686-binutils: ローカル (2.31.1-2) のほうが mingw32 よりも最新です (2.30-6)
:: mingw-w64-i686-ncurses を mingw32/mingw-w64-i686-pdcurses に置き換えますか? [Y/n]
:: mingw-w64-i686-termcap を mingw32/mingw-w64-i686-pdcurses に置き換えますか? [Y/n]
警告: mingw-w64-x86_64-binutils: ローカル (2.31.1-2) のほうが mingw64 よりも最新です (2.30-6)
:: mingw-w64-x86_64-ncurses を mingw64/mingw-w64-x86_64-pdcurses に置き換えますか? [Y/n]
:: mingw-w64-x86_64-termcap を mingw64/mingw-w64-x86_64-pdcurses に置き換えますか? [Y/n]
依存関係を解決しています...
衝突するパッケージがないか確認しています...
エラー: 処理の準備に失敗しました (依存関係を解決できませんでした)
:: mingw-w64-i686-gcc (9.1.0-1) をインストールすると 'mingw-w64-i686-gcc=7.4.0-1' が破壊され mingw-w64-i686-gcc-ada の依存関係が壊れます
:: mingw-w64-i686-gcc (9.1.0-1) をインストールすると 'mingw-w64-i686-gcc=7.4.0-1' が破壊され mingw-w64-i686-gcc-objc の依存関係が壊れます
:: mingw-w64-x86_64-gcc (9.1.0-1) をインストールすると 'mingw-w64-x86_64-gcc=8.3.0-2' が破壊され mingw-w64-x86_64-gcc-ada の依存関係が壊れます
:: mingw-w64-x86_64-gcc (9.1.0-1) をインストールすると 'mingw-w64-x86_64-gcc=8.3.0-2' が破壊され mingw-w64-x86_64-gcc-objc の依存関係が壊れます

対処方法

依存関係が破壊されると警告されているパッケージを手動で削除。

$ pacman -R mingw-w64-i686-gcc-ada
$ pacman -R mingw-w64-i686-gcc-objc
$ pacman -R mingw-w64-x86_64-gcc-ada
$ pacman -R mingw-w64-x86_64-gcc-objc

再度パッケージ更新を実行。

$ pacman -Syu

無事に更新が完了できた。

参考

  1. Pacmanの使い方
  2. MSYS2における正しいパッケージの更新方法
  3. pacmanの更新でデータベースエラーが出るとき
  4. MSYS2 の pacman データベースの更新ができない時の回避方法

コメント

タイトルとURLをコピーしました