みなさん、こんにちは。
以前、Xubuntu 22.04上で超軽量なMokshaデスクトップ環境を構築する方法をご紹介しました。
※記事は24.04用ですが、22.04の場合はスクリプトを jammy.install.sh に書き換えるだけでOKです。
私もこの環境を愛用しているのですが、先日 apt upgrade を実行したところ、謎の依存関係エラーに遭遇してしまいました。
今回は、その原因と解消策である「APT Pinning」の設定方法を共有します!
突如発生した「満たせない依存関係」エラー
ある日、ターミナルでアップデートをかけようとすると、こんなエラーで止まってしまいました。
以下のパッケージには満たせない依存関係があります:
shim-signed : 依存: grub-efi-amd64-signed (>= 1.191~)
しかし 1.187.12+2.06-2ubuntu14.8 がインストールされようとしています
または base-files (< 12.3)
一見すると、よくある shim-signed と grub-efi のバージョン不整合に見えますが、実はもっと深いところに「真犯人」が隠れていました。
なぜ依存関係がループしたのか?
原因を切り分けるために、APTの依存解決ログをデバッグモードで確認してみます。
sudo apt -o Debug::pkgProblemResolver=yes upgrade
すると、怪しい挙動を発見しました。
Package shim-signed:amd64 依存 on base-files:amd64 < 12ubuntu4.7 -> 20.04-2 >
Keeping Package base-files:amd64 due to 依存
以下のパッケージは保留されます:
base-files
base-files のバージョンが 12ubuntu4.7 から 20.04-2 に更新されようとしています。 Ubuntu 22.04(Jammy)において、これは明らかにおかしい数字です。
base-filesの配布元をチェック
さらに詳しく調べてみます。
apt-cache policy base-files
【結果】
- インストール済み:12ubuntu4.7
- 候補:20.04-2 (http://packages.bodhilinux.com bodhi jammy/b7main)
ここで原因が確定しました!
Bodhi Linuxのリポジトリ(jammy/b7main)が、独自の「base-files (20.04-2)」を配布していたのです。
APTは「20.04-2」の方が「12.x」よりも新しいと判断してインストールしようとしますが、shim-signed は「12.3未満」を要求するため、ここで依存関係が破綻していたわけですね。
依存関係ループの解消策 – APT PinningでUbuntu純正版を優先する
Mokshaデスクトップは使い続けたいので、Bodhiリポジトリを消すわけにはいきません。
そこで、「base-filesだけはUbuntu公式リポジトリ版を強制的に使う」ように設定(Pinning)します。
手順1 – 設定ファイルの作成
/etc/apt/preferences.d/base-files というファイルを新規作成し、以下の内容を記述します。
Package: base-files
Pin: release o=Ubuntu
Pin-Priority: 1001
この設定により、Bodhi版よりもUbuntu版の base-files が優先されるようになります。
手順2 – 正しいバージョンに戻す
念のため、base-files をUbuntu純正のバージョンで再インストールします。
sudo apt install --reinstall base-files=12ubuntu4.7
手順3 – アップグレードの再開
あとは通常通り更新するだけです!
sudo apt update
sudo apt upgrade
これで依存関係ループがスッキリ解消されました!
ディストリビューション混在環境で気をつけるべきポイント
今回のトラブルは、以下の条件が重なったことで発生しました。
- Xubuntu 22.04 をベースに運用
- Bodhi Linuxのリポジトリを追加してMokshaを導入
- Bodhi側がOSの基盤パッケージ(base-files)を独自バージョンで配布
- バージョン番号の逆転によりAPTが混乱
今回の教訓
- 「異なるディストリビューションのリポジトリを混ぜるときは、基盤パッケージ(base-files, libc, systemdなど)に注意!」
- 不整合が起きたら
apt-cache policyで配布元を確認。 - 必要に応じて APT Pinning を活用して制御するのが安全。
BodhiのMokshaデスクトップは非常に軽量で素晴らしい環境ですが、Ubuntuに追加インストールして使う場合はこうしたちょっとした手なずけが必要になることもあります。
同じ現象で困っている方の参考になれば幸いです。
本日も最後までお読みいただきありがとうございました。
それでは、よいMokshaライフを!



