background
以下のパッケージには満たせない依存関係があります:
xxxxxxxxx : 依存: xxxxx-dev しかし、インストールされようとしていません
依存: xxxxx-dev しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
ERROR: the following rosdeps failed to install
apt
でパッケージをインストールしようとすると上記の通りのエラーが出るので、 aptitude install xxxxxx
を使って依存しているパッケージのダウングレードをすることをして、入れたいパッケージを無理矢理入れていたのですが、あるとき気づきました。
リポジトリの設定自体古いのではないか
OS
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.9 (stretch)
Release: 9.9
Codename: stretch
sources.list
$ sudo vim /etc/apt/sources.list
deb http://ftp.jaist.ac.jp/raspbian Jessie main contrib non-free rpi
OSはstretch
で最新versionだったのですが、 リポジトリの設定がJessie
と1世代古い設定になっていました。
何回tryしてもパッケージのversionが会わないわけだ。(そりゃそうか)
参考までにOSのversionとnameを記しておきます。
Debian | codename | Date |
---|---|---|
Debian 9 | Stretch | 2017/08/16~ |
Debian 8 | Jessie | 2015~ |
Debian 7 | Wheezy | 2013~2016 |
Debian 6.0 | Squeeze | 2011~2014 |
Debian GNU/Linux 5.0 | Lenny | 2009~2012 |
method
修正方法ですが、まずリポジトリの設定ファイル開き、Jessie
からStretch
に編集します。
sources.list
$ sudo vim /etc/apt/sources.list
deb http://ftp.jaist.ac.jp/raspbian Stretch main contrib non-free rpi
で、そのままupdateをかける。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
これで、依存関係に係わるerrorは解消しました!
reference
Ubuntuで依存関係が壊れている時の対応
Raspberry Piの過去の古いバージョンの Raspbian OSのイメージファイルをダウンロードする方法