2018年11月13日火曜日

dpkgやapt-getで依存関係のエラーが出た時の対処法

wineで久々に依存関係でハマりました。 わかりやすい事例だったのでdpkgやapt-get関連でエラーが出た時の対処法をまとめてみます。

まず以下のようなエラーが出ている状況を想定します。実際に出て困った訳ですけど。
$ sudo apt-get install wine-stable
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
wine-stable はすでに最新バージョン (3.0-1ubuntu1) です。
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 wine32:i386 : 依存: libwine:i386 (= 3.0-1ubuntu1) しかし、インストールされようとしていません
 wine64 : 依存: libwine (= 3.0-1ubuntu1) しかし、インストールされようとしていません
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。

エラーが出たら最初は説明通りに以下のコマンドを打ってみましょう。
$ sudo apt --fix-broken install
長いので省略
:
処理中にエラーが発生しました:
 /var/cache/apt/archives/libwine_3.0-1ubuntu1_amd64.deb
 /var/cache/apt/archives/libwine_3.0-1ubuntu1_i386.deb
 /var/cache/apt/archives/fonts-wine_3.0-1ubuntu1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

たいていは上記のコマンドで解決するのですが、今回は解決しませんでした。 そういう時は以下のコマンドで問題を探ると良いです。wine* の3つが設定不足で悪さをしているらしい。
$ sudo dpkg --audit
以下のパッケージは展開されましたが、まだ設定されていません。
これらのパッケージが正常に動作するためには、dpkg --configure か
dselect の設定 (configure) メニューオプションを使って設定を完了
させなければなりません:
 wine-stable          Windows API implementation - standard suite
 wine32:i386          Windows API implementation - 32-bit binary loader
 wine64               Windows API implementation - 64-bit binary loader

以下のパッケージはトリガされましたが、トリガ処理はまだ完了していません。
トリガ処理は dselect または dpkg --configure --pending (あるいは dpkg
--triggers-only) の利用で要求できます。
 hicolor-icon-theme   default fallback theme for FreeDesktop.org icon themes
 libc-bin             GNU C Library: Binaries
 man-db               on-line manual pager

説明に従って dpkg --configure を実行して設定を試みてみましょう。
$ sudo dpkg --configure -a
dpkg: 依存関係の問題により wine32:i386 の設定ができません:
 wine32:i386 は以下に依存 (depends) します: libwine (= 3.0-1ubuntu1) ...しかし:
  パッケージ libwine:i386 はまだインストールされていません。

dpkg: パッケージ wine32:i386 の処理中にエラーが発生しました (--configure):
 依存関係の問題 - 設定を見送ります
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...
dpkg: 依存関係の問題により wine64 の設定ができません:
 wine64 は以下に依存 (depends) します: libwine (= 3.0-1ubuntu1) ...しかし:
  パッケージ libwine:amd64 はまだインストールされていません。

dpkg: パッケージ wine64 の処理中にエラーが発生しました (--configure):
 依存関係の問題 - 設定を見送ります
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
hicolor-icon-theme (0.17-2) のトリガを処理しています ...
dpkg: 依存関係の問題により wine-stable の設定ができません:
 wine-stable は以下に依存 (depends) します: wine64 (>= 3.0-1ubuntu1) | wine32 (>= 3.0-1ubuntu1) ...しかし:
  パッケージ wine64 はまだ設定されていません。
  パッケージ wine32:i386 はまだ設定されていません。
 wine-stable は以下に依存 (depends) します: wine64 (<< 3.0-1ubuntu1.1~) | wine32 (<< 3.0-1ubuntu1.1~) ...しかし:
  パッケージ wine64 はまだ設定されていません。
  パッケージ wine32:i386 はまだ設定されていません。

dpkg: パッケージ wine-stable の処理中にエラーが発生しました (--configure):
 依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
 wine32:i386
 wine64
 wine-stable

上記のコマンドで直る時も多いのですが、今回はこれまた駄目。 このままだと apt-get upgrade もできないので、以下のコマンドで壊れているパッケージを取り除いてしまいましょう。
$ sudo dpkg --remove --force-remove-reinstreq wine32:ie86
dpkg: 警告: インストールされていない wine-i386 を削除する要求を無視します
$ sudo dpkg --remove --force-remove-reinstreq wine64
dpkg: 警告: インストールされていない wine-64 を削除する要求を無視します
$ sudo dpkg --remove --force-remove-reinstreq wine-stable
(データベースを読み込んでいます ... 現在 539892 個のファイルとディレクトリがインストールされています。)
wine-stable (3.0-1ubuntu1) を削除しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
hicolor-icon-theme (0.17-2) のトリガを処理しています ...

警告が出てるけど特に問題はないです。私の環境ではこれで依存関係のエラーは消えました。 解決に少し時間を取られたので、今後はこの手順でやっていこうと思います。

参考文献:

2 件のコメント:

amanoese さんのコメント...

助かりました。ありがとうございます。

Unknown さんのコメント...

susaka