Raspberry PiにGstreamerをインストールする時に出たエラーメモ


[skyway-gateway](https://www.npmjs.com/package/skyway-gateway)の準備で出たエラーに関するメモです。
マジでメモなので何の参考にもならないかもしれないので、眺める人はそれくらいのテンションでお願いします。

## 出たエラー

`libgstreamer1.0-dev`がなかなかインストール出来なくて苦戦してました。

```bash
$ sudo apt install -y gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
gstreamer1.0-tools はすでに最新バージョン (1.4.4-2+deb8u1) です。
gstreamer1.0-plugins-good はすでに最新バージョン (1.10.4-1) です。
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 libgstreamer1.0-dev : 依存: libgstreamer1.0-0 (= 1.4.4-2+deb8u1) しかし、1.10.4-1 はインストールされようとしています
                       依存: libglib2.0-dev しかし、インストールされようとしていません
                       推奨: debhelper しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
```

`libgstreamer1.0-dev`のインストールをしようとしたときに

* libgstreamer1.0-0
* libglib2.0-dev
* debhelper

の三つの依存がうまく解決出来てない模様。

## 基本の流れ

* インストール出来なかったら、`sudo aptitude install`で解決策を探してもらう
* それでも解決しなかったら`sudo apt install -y --allow-downgrades`で直接バージョン指定してinstallしてみる

って感じでやっていきました。

## 流れ

```bash
$ sudo aptitude install libgstreamer1.0-dev

以下の新規パッケージがインストールされます:
  autopoint{a} debhelper{a} gettext{a} gir1.2-gstreamer-1.0{a} intltool-debian{a}
  libasprintf-dev{a} libasprintf0c2{a} libgettextpo-dev{a} libgettextpo0{a} libglib2.0-dev{ab}
  libgstreamer1.0-dev{b} libmail-sendmail-perl{a} libpcre3-dev{ab} libpcrecpp0{a}
  libsys-hostname-long-perl{a} po-debconf{a}
更新: 0 個、新規インストール: 16 個、削除: 0 個、保留: 4 個。
アーカイブの 8,060 kB を取得する必要があります。展開後に 23.3 MB のディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
 libpcre3-dev : 依存: libpcre3 (= 2:8.35-3.3+deb8u4) 2:8.39-3 がインストール済みです
 libgstreamer1.0-dev : 依存: libgstreamer1.0-0 (= 1.4.4-2+deb8u1) 1.10.4-1 がインストール済みです
 libglib2.0-dev : 依存: libglib2.0-0 (= 2.42.1-1) 2.50.3-2 がインストール済みです
                  依存: libglib2.0-bin (= 2.42.1-1) 2.50.3-2 がインストール済みです
以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージを現在のバージョンに一時固定する:
1)     libglib2.0-dev [インストールされていません]
2)     libgstreamer1.0-dev [インストールされていません]
3)     libpcre3-dev [インストールされていません]



この解決方法を受け入れますか? [Y/n/q/?]Y
以下の新規パッケージがインストールされます:
  autopoint{a} debhelper{a} gettext{a} intltool-debian{a} libasprintf-dev{a} libasprintf0c2{a}
  libgettextpo-dev{a} libgettextpo0{a} libmail-sendmail-perl{a} libsys-hostname-long-perl{a}
  po-debconf{a}
更新: 0 個、新規インストール: 11 個、削除: 0 個、保留: 4 個。
アーカイブの 2,990 kB を取得する必要があります。展開後に 9,140 kB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] Y
取得: 1 http://ftp.jaist.ac.jp/raspbian jessie/main armhf libasprintf0c2 armhf 0.19.3-2 [31.1 kB]
取得: 2 http://ftp.jaist.ac.jp/raspbian jessie/main armhf libgettextpo0 armhf 0.19.3-2 [115 kB]
取得: 3 http://ftp.jaist.ac.jp/raspbian jessie/main armhf autopoint all 0.19.3-2 [413 kB]
取得: 4 http://ftp.jaist.ac.jp/raspbian jessie/main armhf gettext armhf 0.19.3-2 [1,167 kB]
取得: 5 http://ftp.jaist.ac.jp/raspbian jessie/main armhf intltool-debian all 0.35.0+20060710.1 [29.8 kB]
取得: 6 http://ftp.jaist.ac.jp/raspbian jessie/main armhf po-debconf all 1.0.16+nmu3 [220 kB]
取得: 7 http://ftp.jaist.ac.jp/raspbian jessie/main armhf debhelper all 9.20150101+deb8u2 [817 kB]
取得: 8 http://ftp.jaist.ac.jp/raspbian jessie/main armhf libasprintf-dev armhf 0.19.3-2 [31.0 kB]
取得: 9 http://ftp.jaist.ac.jp/raspbian jessie/main armhf libgettextpo-dev armhf 0.19.3-2 [128 kB]
取得: 10 http://ftp.jaist.ac.jp/raspbian jessie/main armhf libsys-hostname-long-perl all 1.4-3 [11.6 kB]
取得: 11 http://ftp.jaist.ac.jp/raspbian jessie/main armhf libmail-sendmail-perl all 0.79.16-1 [26.6 kB]
2,990 kB を 4秒 秒で取得しました (694 kB/s)
以前に未選択のパッケージ libasprintf0c2:armhf を選択しています。
(データベースを読み込んでいます ... 現在 130508 個のファイルとディレクトリがインストールされています。)
.../00-libasprintf0c2_0.19.3-2_armhf.deb を展開する準備をしています ...
libasprintf0c2:armhf (0.19.3-2) を展開しています...
以前に未選択のパッケージ libgettextpo0:armhf を選択しています。
.../01-libgettextpo0_0.19.3-2_armhf.deb を展開する準備をしています ...
libgettextpo0:armhf (0.19.3-2) を展開しています...
以前に未選択のパッケージ autopoint を選択しています。
.../02-autopoint_0.19.3-2_all.deb を展開する準備をしています ...
autopoint (0.19.3-2) を展開しています...
以前に未選択のパッケージ gettext を選択しています。
.../03-gettext_0.19.3-2_armhf.deb を展開する準備をしています ...
gettext (0.19.3-2) を展開しています...
以前に未選択のパッケージ intltool-debian を選択しています。
.../04-intltool-debian_0.35.0+20060710.1_all.deb を展開する準備をしています ...
intltool-debian (0.35.0+20060710.1) を展開しています...
以前に未選択のパッケージ po-debconf を選択しています。
.../05-po-debconf_1.0.16+nmu3_all.deb を展開する準備をしています ...
po-debconf (1.0.16+nmu3) を展開しています...
以前に未選択のパッケージ debhelper を選択しています。
.../06-debhelper_9.20150101+deb8u2_all.deb を展開する準備をしています ...
debhelper (9.20150101+deb8u2) を展開しています...
以前に未選択のパッケージ libasprintf-dev:armhf を選択しています。
.../07-libasprintf-dev_0.19.3-2_armhf.deb を展開する準備をしています ...
libasprintf-dev:armhf (0.19.3-2) を展開しています...
以前に未選択のパッケージ libgettextpo-dev:armhf を選択しています。
.../08-libgettextpo-dev_0.19.3-2_armhf.deb を展開する準備をしています ...
libgettextpo-dev:armhf (0.19.3-2) を展開しています...
以前に未選択のパッケージ libsys-hostname-long-perl を選択しています。
.../09-libsys-hostname-long-perl_1.4-3_all.deb を展開する準備をしています ...
libsys-hostname-long-perl (1.4-3) を展開しています...
以前に未選択のパッケージ libmail-sendmail-perl を選択しています。
.../10-libmail-sendmail-perl_0.79.16-1_all.deb を展開する準備をしています ...
libmail-sendmail-perl (0.79.16-1) を展開しています...
gettext (0.19.3-2) を設定しています ...
install-info (6.3.0.dfsg.1-1+b1) のトリガを処理しています ...
libasprintf0c2:armhf (0.19.3-2) を設定しています ...
libsys-hostname-long-perl (1.4-3) を設定しています ...
intltool-debian (0.35.0+20060710.1) を設定しています ...
libgettextpo0:armhf (0.19.3-2) を設定しています ...
libmail-sendmail-perl (0.79.16-1) を設定しています ...
libgettextpo-dev:armhf (0.19.3-2) を設定しています ...
libasprintf-dev:armhf (0.19.3-2) を設定しています ...
man-db (2.7.6.1-2) のトリガを処理しています ...
autopoint (0.19.3-2) を設定しています ...
po-debconf (1.0.16+nmu3) を設定しています ...
debhelper (9.20150101+deb8u2) を設定しています ...
```

再度インストールを試してみたら、

`libgstreamer1.0-0`、`libglib2.0-dev`、`debhelper`の三つのうち`debhelper`のメッセージは消えました。

### libgstreamer1.0-0をバージョン固定で入れてみる

```bash
$ sudo apt install -y libgstreamer1.0-0=1.4.4-2+deb8u1 --allow-downgrades

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  bluealsa epiphany-browser-data fontconfig-infinality fonts-piboto gnome-desktop3-data
  gstreamer0.10-alsa gstreamer0.10-plugins-base gtk2-engines-clearlookspix
  libavahi-gobject0 libcdparanoia0 libde265-0 libgnome-desktop-3-12
  libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libilmbase12
  libjavascriptcoregtk-3.0-0 libjavascriptcoregtk-4.0-18 libkate1 liblilv-0-0
  libmjpegutils-2.1-0 libmms0 libmodplug1 libmpcdec6 libmpeg2encpp-2.1-0 libmplex2-2.1-0
  libofa0 libopencv-calib3d2.4v5 libopencv-features2d2.4v5 libopencv-flann2.4v5
  libopencv-highgui2.4-deb0 libopencv-objdetect2.4v5 libopencv-video2.4v5 libopenexr22
  liborc-0.4-0 libossp-uuid16 libsbc1 libserd-0-0 libsord-0-0 libsoundtouch1 libspandsp2
  libsratom-0-0 libsrtp0 libvisual-0.4-0 libvo-aacenc0 libvo-amrwbenc0
  libwebrtc-audio-processing1 libwildmidi-config libwildmidi2 libwnck-3-0
  libwnck-3-common libxfce4util-bin libxfce4util-common libxfce4util7 libxfconf-0-2
  libzbar0 lxplug-bluetooth lxplug-ejecter lxplug-ptbatt lxplug-volume pi-greeter pimixer
  pishutdown point-rpi rpd-plym-splash rpd-wallpaper uuid xfconf zenity-common
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  libreoffice-avmedia-backend-vlc libvlc-bin libvlc5 libvlccore9
提案パッケージ:
  gstreamer1.0-tools gstreamer1.0-plugins-base
推奨パッケージ:
  libproxy-tools
以下のパッケージは「削除」されます:
  epiphany-browser gstreamer1.0-alsa gstreamer1.0-libav gstreamer1.0-omx
  gstreamer1.0-omx-rpi gstreamer1.0-omx-rpi-config gstreamer1.0-plugins-bad
  gstreamer1.0-plugins-base gstreamer1.0-x libgstreamer-plugins-bad1.0-0
  libgstreamer-plugins-base1.0-0 libreoffice libreoffice-avmedia-backend-gstreamer
.../libreoffice-avmedia-backend-vlc_1%3a4.3.3-2+deb8u11_armhf.deb を展開する準備をしていま
す ...
libreoffice-avmedia-backend-vlc (1:4.3.3-2+deb8u11) を展開しています...
以前に未選択のパッケージ libvlc-bin:armhf を選択しています。
.../libvlc-bin_3.0.6-0+rpt4+deb9u1_armhf.deb を展開する準備をしています ...
libvlc-bin:armhf (3.0.6-0+rpt4+deb9u1) を展開しています...
libgstreamer1.0-0:armhf (1.4.4-2+deb8u1) を設定しています ...
mime-support (3.60) のトリガを処理しています ...
desktop-file-utils (0.23-1) のトリガを処理しています ...
libc-bin (2.24-11+deb9u1) のトリガを処理しています ...
libvlccore9:armhf (3.0.6-0+rpt4+deb9u1) を設定しています ...
man-db (2.7.6.1-2) のトリガを処理しています ...
shared-mime-info (1.8-1) のトリガを処理しています ...
gnome-menus (3.13.3-9) のトリガを処理しています ...
hicolor-icon-theme (0.15-1) のトリガを処理しています ...
libvlc5:armhf (3.0.6-0+rpt4+deb9u1) を設定しています ...
libvlc-bin:armhf (3.0.6-0+rpt4+deb9u1) を設定しています ...
libreoffice-avmedia-backend-vlc (1:4.3.3-2+deb8u11) を設定しています ...
libc-bin (2.24-11+deb9u1) のトリガを処理しています ...
libvlc-bin:armhf (3.0.6-0+rpt4+deb9u1) のトリガを処理しています ...
```

これで再度インストールしてみたら、`libgstreamer1.0-0`のメッセージも消えました。

* × libgstreamer1.0-0
* ○ libglib2.0-dev
* ○ debhelper

って感じですね。

### libgstreamer1.0-dev

```bash
$ sudo apt install -y libgstreamer1.0-dev

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

以下のパッケージには満たせない依存関係があります:
 libgstreamer1.0-dev : 依存: libglib2.0-dev しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
```

#### 依存しているlibglib2.0-devがインストールされない

```bash
$sudo apt install -y libglib2.0-dev
・・・
以下のパッケージには満たせない依存関係があります:
 libglib2.0-dev : 依存: libglib2.0-0 (= 2.42.1-1) しかし、2.50.3-2 はインストールされようとしています
                  依存: libglib2.0-bin (= 2.42.1-1) しかし、2.50.3-2 はインストールされようとしています
                  依存: libpcre3-dev (>= 1:8.31) しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
```

libglib2.0-0,libglib2.0-bin,libpcre3-devが依存...

##### さらにlibglib2.0-devに依存しているがインストールされない

```bash
$ sudo apt install -y --allow-downgrades libglib2.0-0=2.42.1-1 libglib2.0-bin=2.42.1-1 libpcre3-dev=1:8.31

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: 'libpcre3-dev' のバージョン '1:8.31' が見つかりませんでした
```

どうやらlibpcre3-devがないらしい

他は問題なさそうだったので以下でインストール

```bash
$ sudo apt install -y --allow-downgrades libglib2.0-0=2.42.1-1 libglib2.0-bin=2.42.1-1
```

```bash
$ sudo apt install -y libpcre3-dev
・
・
・
以下のパッケージには満たせない依存関係があります:
 libpcre3-dev : 依存: libpcre3 (= 2:8.35-3.3+deb8u4) しかし、2:8.39-3 はインストールされようとしています
```

```bash
$ sudo apt install -y --allow-downgrades libpcre3=2:8.35-3.3+deb8u4
```

## やっとかえってこれてきた

```bash
$ sudo apt install -y libglib2.0-dev
```

```bash
$ sudo apt install -y libgstreamer1.0-dev
```

インストール完了

## gstreamer1.0-plugins-goodなどもエラー出た

```bash
 gstreamer1.0-plugins-good : 依存: libgdk-pixbuf2.0-0 (>= 2.22.0) しかし、インストールされようとしていません
                             依存: libsoup2.4-1 (>= 2.40) しかし、インストールされようとしていません
```

`aptitude install`を試す、ダメなら`sudo apt install -y --allow-downgrades`でバージョン固定でインストールを繰り返しました。

```bash
$ sudo aptitude install -y gstreamer1.0-plugins-good
```

```bash
$ sudo apt install -y --allow-downgrades libgdk-pixbuf2.0-0=2.22.0
```

他のモジュールも同じようにやっていきました。
依存の階層が深くなりすぎて訳がわからない感じになってきたので省略します。

## やっと

エラー出ずにインストール出来た模様。

```bash
$ sudo apt install -y gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
gstreamer1.0-plugins-good はすでに最新バージョン (1.4.4-2+deb8u3) です。
gstreamer1.0-plugins-ugly はすでに最新バージョン (1.4.4-2+deb8u1) です。
gstreamer1.0-tools はすでに最新バージョン (1.4.4-2+deb8u1) です。
libgstreamer-plugins-base1.0-dev はすでに最新バージョン (1.4.4-2+deb8u1) です。
libgstreamer1.0-dev はすでに最新バージョン (1.4.4-2+deb8u1) です。
```