【Ubuntu】【apt】apt-get install 時の依存関係エラー【トラブル】

本ページの概要
 

  • apt-get install でどのパッケージをインストールしようとしても依存関係のエラーになる問題の解決までのメモ。
  • 目次に apt-get あるいは apt をはじめとした apt システムに関するエラーを書き留めている
  • 余談として、apt-get ではなく apt の使用が推奨されている模様
    • 理由は、コマンドの使用方法に統一性を持たせるためらしい

 

 

OS サポート期限切れによる sources.list 内のリポジトリパス不一致

発生環境・状況

  • 対象 OS は Ubuntu11.04 (x86) と古い。(2017/08時点)
# date
2017814日 月曜日 13:11:50 JST
# cat /etc/issue
Ubuntu 11.04 \n \l
# uname -a
Linux XXXX-virtual-machine 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux

 

エラー原因と対策方法

原因
  • 使用していた OS が古く /etc/apt/sources.list 内の URL を変える必要があった
対策方法

以下 1、2 を行う

  • 1. /etc/apt/sources.list 内の URL を「old-releases.ubuntu.com」に変更する
  • 2. apt-get update を実行する


 
以下は解決に至るまでの記録
 

解決までの記録

sar コマンドを導入したくて、sysstat のインストールを試みたが以下の依存関係エラー発生した。

# apt-get install sysstat
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の問題を解決するために 'apt-get -f install' を実行する必要があるかもしれません:
以下のパッケージには満たせない依存関係があります:
 gdb-multiarch : 依存: libc6 (>= 2.15) しかし、2.13-0ubuntu13.2 はインストールされようとしています
                 依存: libtinfo5 しかし、インストールすることができません
E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)

 
解決しないと思うがお決まりの apt-get update を行い、再度、apt-get install をする。

# apt-get update
()

# apt-get install sysstat
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の問題を解決するために 'apt-get -f install' を実行する必要があるかもしれません:
以下のパッケージには満たせない依存関係があります:
 gdb-multiarch : 依存: libc6 (>= 2.15) しかし、2.13-0ubuntu13.2 はインストールされようとしています
                 依存: libtinfo5 しかし、インストールすることができません
E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)

 
依存関係に関係するライブラリの削除を行った後に、再度、apt-get install を試みる。
ただし、libc6 は重要で消すとマズイので削除は見送り、xv6 デバッグはもうしないのでgdb-multiarch と 何か良くわからないがlibtinfo5 の削除 apt-get remove を試みる。

# apt-get -y remove gdb-multiarch libtinfo5
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
'libtinfo5' のような仮想パッケージは削除できません
以下のパッケージは「削除」されます:
  gdb-multiarch
アップグレード: 0 個、新規インストール: 0 個、削除: 1 個、保留: 322 個。
1 個のパッケージが完全にインストールまたは削除されていません。
この操作後に 7,395 kB のディスク容量が解放されます。
(データベースを読み込んでいます ... 現在 211892 個のファイルとディレクトリがインストールされています。)
gdb-multiarch を削除しています ...
man-db のトリガを処理しています ...
# apt-get install sysstat
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
提案パッケージ:
  isag
以下のパッケージが新たにインストールされます:
  sysstat
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 322 個。
264 kB のアーカイブを取得する必要があります。
この操作後に追加で 836 kB のディスク容量が消費されます。
警告: 以下のパッケージは認証されていません!
  sysstat
検証なしにこれらのパッケージをインストールしますか [y/N]?
エラー http://jp.archive.ubuntu.com/ubuntu/ natty/main sysstat i386 9.1.7-2ubuntu1
404  Not Found
http://jp.archive.ubuntu.com/ubuntu/pool/main/s/sysstat/sysstat_9.1.7-2ubuntu1_i386.deb の取得に失敗しました  404  Not Found
E: いくつかのアーカイブが取得できません。apt-get update を実行するか --fix-missing オプションを付けて試してみてください。

 
上記ログより、下記2つの URL が見つからないとの指摘かと思われる。

http://jp.archive.ubuntu.com/ubuntu/natty/main sysstat i386 9.1.7-2ubuntu1
http://jp.archive.ubuntu.com/ubuntu/pool/main/s/sysstat/sysstat_9.1.7-2ubuntu1_i386.deb

 
Webを検索すると、こちらのページが見つかった。
どうやら、Ubuntu のバージョンが古くなりパッケージ置き場の URL を変える必要があった模様。
security.ubuntu.comold-releases.ubuntu.com
jp.archive.ubuntu.comold-releases.ubuntu.com

# cp -p /etc/apt/sources.list /etc/apt/sources.list.bak
# sed -i 's%security.ubuntu.com%old-releases.ubuntu.com%g'   /etc/apt/sources.list
# sed -i 's%jp.archive.ubuntu.com%old-releases.ubuntu.com%g' /etc/apt/sources.list

 
再再度、apt-get install sysstat で導入に成功した。

# apt-get install sysstat
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
提案パッケージ:
  isag
以下のパッケージが新たにインストールされます:
  sysstat
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 322 個。
264 kB のアーカイブを取得する必要があります。
この操作後に追加で 836 kB のディスク容量が消費されます。
取得:1 http://old-releases.ubuntu.com/ubuntu/ natty/main sysstat i386 9.1.7-2ubuntu1 [264 kB]
264 kB を 3秒 で取得しました (76.9 kB/s)
パッケージを事前設定しています ...
未選択パッケージ sysstat を選択しています。
(データベースを読み込んでいます ... 現在 211890 個のファイルとディレクトリがインストールされています。)
(.../sysstat_9.1.7-2ubuntu1_i386.deb から) sysstat を展開しています...
man-db のトリガを処理しています ...
doc-base のトリガを処理しています ...
Processing 1 added doc-base file(s)...
Registering documents with scrollkeeper...
ureadahead のトリガを処理しています ...
ureadahead will be reprofiled on next reboot
sysstat (9.1.7-2ubuntu1) を設定しています ...

Creating config file /etc/default/sysstat with new version
update-alternatives: /usr/bin/sar (sar) を提供するために 自動モード で /usr/bin/sar.sysstat を使います。

 

sources.list 内のリポジトリパスを old-release に変えたが 404 エラーが起きる

発生環境・状況

  • Ubuntu 16.10 (2018/05上旬)
  • いわゆる old-release に変える対応をしたが、apt-get update をすると 404 (Not found) エラーが起きる
  • 当然、old-release に変えずに apt-get install vim などとしてもパッケージ見つからずとなる

 

エラー原因と対策方法

原因
  • 正確な原因不明だが、Ubuntu16.10 のサポートが切れた直後であり、old-release に変える時期が早かったのかも知れない

 

対策方法
  • /etc/apt/sources.list の URL は変えずにプロジェクト名のみをサポート期間中のものに変えた
  • 具体的には、以下のように yakkety (16.10) から artful (17.10) に変えた
    • このとき artful(17.10) はサポート期間であった
% sudo cp /etc/apt/sources.list /etc/apt/sources.lis.orig
% sudo sed -i 's/\<yakkety\>/artful/g' /etc/apt/sources.list
引用元

 

「満せない依存関係があります」というエラーが出てしまう

発生環境・状況

後述のように異なるパッケージをインストールしようとしても同じエラーメッセージ「満せない依存関係があります」というエラーが出てしまう場合。

% sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
ca-certificates はすでに最新バージョン (20180409) です。
ca-certificates は手動でインストールしたと設定されました。
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 curl : 依存: libcurl4 (= 7.58.0-2ubuntu3.3) しかし、7.58.0-2ubuntu3.2 はインストールされようとしています
 software-properties-common : 依存: python3-software-properties (= 0.96.24.32.5) しかし、0.96.24.32.1 はインストールされようとしています
 woeusb:i386 : 依存: dosfstools:i386 しかし、インストールされようとしていません
               依存: ntfsprogs:i386 しかし、インストールすることができません または
                       ntfs-3g:i386 しかし、インストールされようとしていません
               依存: p7zip-full:i386 しかし、インストールされようとしていません
               依存: parted:i386 しかし、インストールされようとしていません
               依存: libwxbase3.0-0v5:i386 (>= 3.0.4+dfsg) しかし、インストールされようとしていません
               依存: libwxgtk3.0-0v5:i386 (>= 3.0.4+dfsg) しかし、インストールされようとしていません
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)
> sudo apt install docker-ce
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 woeusb:i386 : 依存: dosfstools:i386 しかし、インストールされようとしていません
               依存: ntfsprogs:i386 しかし、インストールすることができません または
                       ntfs-3g:i386 しかし、インストールされようとしていません
               依存: p7zip-full:i386 しかし、インストールされようとしていません
               依存: parted:i386 しかし、インストールされようとしていません
               依存: libwxbase3.0-0v5:i386 (>= 3.0.4+dfsg) しかし、インストールされようとしていません
               依存: libwxgtk3.0-0v5:i386 (>= 3.0.4+dfsg) しかし、インストールされようとしていません
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)

 

エラー原因と対策方法

原因

woeusb:i386 をインストールするために、独自のパッケージリストを追加してインストールをした影響で、既存(標準)パッケージとの整合性が取れなくなっていた。

 

対策

ブロッカになっている woeusb:i386 とその依存ファイルを消してやれば良い。

% sudo apt remove woeusb:i386 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  activity-log-manager firefox-locale-ja language-pack-gnome-ja language-pack-gnome-ja-base language-pack-ja language-pack-ja-base libgeonames-common
  libgeonames0 libnm-gtk0 libreoffice-help-ja libreoffice-l10n-ja libtimezonemap-data libtimezonemap1 libunity-control-center1 libwxgtk3.0-0v5
  thunderbird-locale-ja
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
  woeusb:i386
アップグレード: 0 個、新規インストール: 0 個、削除: 1 個、保留: 382 個。
1 個のパッケージが完全にインストールまたは削除されていません。
この操作後に 546 kB のディスク容量が解放されます。
続行しますか? [Y/n] y
(データベースを読み込んでいます ... 現在 282487 個のファイルとディレクトリがインストールされています。)
woeusb:i386 (3.2.4-1~webupd8~cosmic0) を削除しています ...
mime-support (3.60ubuntu1) のトリガを処理しています ...
desktop-file-utils (0.23-1ubuntu3) のトリガを処理しています ...
bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu1) のトリガを処理しています ...
Rebuilding /usr/share/applications/bamf-2.index...
man-db (2.8.3-2) のトリガを処理しています ...
gnome-menus (3.13.3-11ubuntu1) のトリガを処理しています ...