2020年1月23日木曜日

apt の「壊れた変更禁止パッケージ」への対処方法

WineHQ 5.0 を入れました。 WineHQ / Wine は大型アップデートの度に、よく環境が壊れるアプリで、今回もやはり壊れてしまいました。 たまに出る「壊れた変更禁止パッケージ」の良い例だったので、直し方をまとめておきます。

まずはマニュアル通りにインストールしていって、以下のエラーが出たことを想定します。 古いバージョンを入れていた人は遭遇するのではないでしょうか。
$ sudo apt install --install-recommends winehq-stable
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 winehq-stable : 依存: wine-stable (= 5.0.0~bionic)
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

上記エラーでは、winehq-stable じゃなくて wine-stable でコケてるとわかりました。 では wine-stable を入れてみましょう。
$ sudo apt install --install-recommends wine-stable
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 wine-stable : 依存: wine-stable-i386 (= 5.0.0~bionic)
 wine-stable : 依存: wine-stable-amd64 (= 5.0.0~bionic)
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

駄目です。今度は記載されている依存ライブラリ (wine-stable-i386 と wine-stable-amd64) を入れていきます。 どちらも i386 / amd64 の違いだけで、出てくるエラーは一緒です。 libfaudio0 なるものを先に入れる必要があるみたいです (下)。
$ sudo apt install --install-recommends wine-stable-i386
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 wine-stable-i386:i386 : 依存: libfaudio0:i386 しかし、インストールすることができません
                         推奨: libcapi20-3:i386 しかし、インストールされようとしていません
                         推奨: libcups2:i386 しかし、インストールされようとしていません
                         推奨: libglu1-mesa:i386 しかし、インストールされようとしていません または
                                 libglu1:i386
                         推奨: libgsm1:i386 しかし、インストールされようとしていません
                         推奨: libgssapi-krb5-2:i386 しかし、インストールされようとしていません
                         推奨: libkrb5-3:i386 しかし、インストールされようとしていません
                         推奨: libodbc1:i386 しかし、インストールされようとしていません
                         推奨: libosmesa6:i386 しかし、インストールされようとしていません
                         推奨: libsane:i386 または
                                 libsane1:i386 しかし、インストールされようとしていません
                         推奨: libsdl2-2.0-0:i386 しかし、インストールされようとしていません
                         推奨: libv4l-0:i386 しかし、インストールされようとしていません
                         推奨: libxcomposite1:i386 しかし、インストールされようとしていません
                         推奨: libxcursor1:i386 しかし、インストールされようとしていません
                         推奨: libxfixes3:i386 しかし、インストールされようとしていません
                         推奨: libxi6:i386 しかし、インストールされようとしていません
                         推奨: libxinerama1:i386 しかし、インストールされようとしていません
                         推奨: libxrandr2:i386 しかし、インストールされようとしていません
                         推奨: libxrender1:i386 しかし、インストールされようとしていません
                         推奨: libxslt1.1:i386 しかし、インストールされようとしていません
                         推奨: libxxf86vm1:i386 しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

libfaudio0 とはなんぞやと 公式 を見ると、ひっそりインストールが必要だよ、と書いてある。 直では入れられないのでダウンロードしてくる必要があります。 バージョンが変わる可能性が高いので、以下のコードをベタ打ちせず、公式のリンク から URL を辿ってください。 これじゃ apt で入れる意味ないじゃんという気分がある。
$ wget https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/amd64/libfaudio0_19.07-0~bionic_amd64.deb
$ wget https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/i386/libfaudio0_19.07-0~bionic_i386.deb
$ sudo dpkg -i libfaudio0_19.07-0~bionic_amd64.deb
以前に未選択のパッケージ libfaudio0:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 271879 個のファイルとディレクトリがインストールされています。)
libfaudio0_19.07-0~bionic_amd64.deb を展開する準備をしています ...
libfaudio0:amd64 (19.07-0~bionic) を展開しています...
libfaudio0:amd64 (19.07-0~bionic) を設定しています ...
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...

$ sudo dpkg -i libfaudio0_19.07-0~bionic_i386.deb
以前に未選択のパッケージ libfaudio0:i386 を選択しています。
(データベースを読み込んでいます ... 現在 271744 個のファイルとディレクトリがインストールされています。)
libfaudio0_19.07-0~bionic_i386.deb を展開する準備をしています ...
libfaudio0:i386 (19.07-0~bionic) を展開しています...
dpkg: 依存関係の問題により libfaudio0:i386 の設定ができません:
 libfaudio0:i386 は以下に依存 (depends) します: libsdl2-2.0-0 (>= 2.0.8).

dpkg: パッケージ libfaudio0:i386 の処理中にエラーが発生しました (--install):
 依存関係の問題 - 設定を見送ります
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...
処理中にエラーが発生しました:
 libfaudio0:i386

なんかエラー出たので、エラー報告に従って淡々と解決していきます。
$ sudo apt install libc-bin
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
libc-bin はすでに最新バージョン (2.27-3ubuntu1) です。
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 libfaudio0:i386 : 依存: libsdl2-2.0-0:i386 (>= 2.0.8) しかし、インストールされようとしていません
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。

$ sudo apt --fix-broken install
 :
長いので省略 (インストール成功)
 :

$ sudo dpkg -i libfaudio0_19.07-0~bionic_i386.deb
(データベースを読み込んでいます ... 現在 271844 個のファイルとディレクトリがインストールされています。)
libfaudio0_19.07-0~bionic_i386.deb を展開する準備をしています ...
libfaudio0:i386 (19.07-0~bionic) で (19.07-0~bionic に) 上書き展開しています ...
libfaudio0:i386 (19.07-0~bionic) を設定しています ...
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...

ここまで来てすべてのエラーが消え、やっと準備が整いました。 最初に入力したインストールコマンドを打ち直してみましょう。
$ sudo apt install --install-recommends winehq-stable

処理過程は長いので載せませんが、インストール成功しました! 相変わらずハマりポイントが多い。お世話になってはいるけど、これがあるから Wine は好きになれない。

7 件のコメント:

やねのすずめ さんのコメント...

Ubuntu 18.04 で、「壊れた変更禁止パッケージ…」が出ましたので、こちらのページを参考にさせていただきました。(終盤、libc-bin 以下のエラーは出ませんでしたが)おかげさまで Wine/WineHQ 4.3 から 5.0 にバージョンアップできました。どうもありがとうございました。

Unknown さんのコメント...

私も全く同じ「壊れた変更禁止パッケージ」が出ました。こちらの対応でばっちりインストールできました。ありがとうございます。

匿名 さんのコメント...

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

匿名 さんのコメント...

全く同じ状況だったので大変助かりました.
ありがとうございます.

匿名 さんのコメント...

どうすればいいか悩んでいたので,助かりました.
ありがとうございます.

kuroyan さんのコメント...

HeidiSQLをubuntu20.04で使う参考にさせて頂きました。多謝!

匿名 さんのコメント...

AMDコアのハードにはi386系でなくamd64系を選択しないといけないようですね。