この記事はACCESS Advent Calendar 3日目の記事です。
こんにちは ACCESS開発本部IoT開発部の加藤 (@aKenjiKato ) です。
Ubuntu 12.04で公式には提供されていないGStreamer1.0を使いたくなることってありますよね。ありますよね。
tarballからビルドするのもありですが、Pluginに対応するパッケージを手動で入れる必要があるので、結構面倒です。
幸い、UbuntuにはPPAという野良レポジトリのホスティングサービスがありまして、
GStreamerを配っているPPAレポジトリを使えば行けます。途中までは。
このページを見ると大抵のものは提供されているように見えるのですが、
実は欠けているものがあります。
gst-plugins-good1.0
- 開発向けパッケージ (
-dev
で終わるもの)
前者はパッケージのビルドエラーです。ビルドエラーは以下のページからわかります。
後者は単にPPAが提供していないためです。これがいらない人もいるでしょう。
まずはパッケージのビルドエラーから参りましょう。
ビルドエラーのログは以下から取得できます。
https://launchpad.net/~gstreamer-developers/+archive/ubuntu/ppa/+build/5341254
見るべきは以下の箇所です。
configure: Requested 'libpulse >= 2.0' but version of libpulse is 1.1
configure: *** These plugins will not be built: pulseaudio
dh_install: gstreamer1.0-pulseaudio missing files (debian/tmp/usr/lib/*/gstreamer-1.0/libgstpulse.so), aborting
make: *** [binary-install/gstreamer1.0-pulseaudio] Error 2
どうやら、PulseAudioのバージョンが古いことが原因のようです。
解決するにはPulseAudioのバージョンを最新に上げる必要がありますが、Ubuntu 12.04はPulseAudio 1.1までしか提供していません。
そこでやはりPPAです。PulseAudio2.0を提供するPPAがあります。
https://launchpad.net/~ubuntu-audio-dev/+archive/ubuntu/ppa
これをインストールすればビルドエラーは解消...できないのです。
このPPAもまた開発用パッケージを提供していないのです。
これを解決するため、パッケージの再ビルドを行います。
パッケージのビルドは、パッケージの元になる*.dsc
ファイルを入手することで行えます。
*.dsc
ファイルは、PPAのページから入手できます。
*.dsc
ファイルが入手出来たら、あとはテンポよくコマンドを叩いていくだけです。
# 再ビルドに必要なツールをインストール
sudo apt-get -y install devscripts
# PPAの追加
sudo add-apt-repository -y ppa:ubuntu-audio-dev/ppa
sudo apt-get update
# pulseaudioをビルドするために必要なパッケージをインストール
sudo apt-get -y build-dep pulseaudio
# 作業用ディレクトリの確保
mkdir tmp
cd tmp
# dscファイルの取得
dget -u https://launchpad.net/~ubuntu-audio-dev/+archive/ubuntu/ppa/+files/pulseaudio_2.0-0ubuntu1%7Eprecise2.dsc
# dget した時点で pulseaudio-2.0 ができているのでその中へ移動
cd pulseaudio-2.0/
# ビルド
dpkg-buildpackage -r -uc -b
cd ..
# パッケージのインストール
dpkg -i *.deb
これでめでたく PulseAudio 2.0 がインストールできました。
次はgst-plugins-good1.0
そして開発用パッケージですが、両方とも結局パッケージの再ビルドで作成できます。
同じようにやってみましょう。
# PPAの追加
sudo -E add-apt-repository -y ppa:gstreamer-developers/ppa
sudo apt-get update
# 各パッケージを再ビルドするために必要なパッケージをインストール
sudo apt-get -y build-dep gstreamer1.0
sudo apt-get -y build-dep gst-plugins-base1.0
sudo apt-get -y build-dep gst-plugins-good1.0
sudo apt-get -y build-dep gst-plugins-ugly1.0
sudo apt-get -y build-dep gst-libav1.0
# 作業用ディレクトリの確保
mkdir tmp
cd tmp
# dscファイルの取得
dget -u https://launchpad.net/~gstreamer-developers/+archive/ubuntu/ppa/+files/gstreamer1.0_1.2.1-1%7Eubuntu12.04.1%7Egstdev1.dsc
dget -u https://launchpad.net/~gstreamer-developers/+archive/ubuntu/ppa/+files/gst-plugins-base1.0_1.2.1-2ubuntu1%7Eubuntu12.04.1%7Egstdev1.dsc
dget -u https://launchpad.net/~gstreamer-developers/+archive/ubuntu/ppa/+files/gst-plugins-good1.0_1.2.1-1ubuntu1%7Eubuntu12.04.1%7Egstdev1.dsc
dget -u https://launchpad.net/~gstreamer-developers/+archive/ubuntu/ppa/+files/gst-plugins-ugly1.0_1.2.1-1%7Eubuntu12.04.1%7Egstdev1.dsc
dget -u https://launchpad.net/~gstreamer-developers/+archive/ubuntu/ppa/+files/gst-libav1.0_1.0.8-1%7Eubuntu12.04.1%7Eppa1.dsc
# 各ディレクトリを回ってパッケージをビルドしていく
cd gstreamer1.0-1.2.1/
dpkg-buildpackage -r -uc -b
cd ..
cd gst-plugins-base1.0-1.2.1/
dpkg-buildpackage -r -uc -b
cd ..
cd gst-plugins-good1.0-1.2.1/
dpkg-buildpackage -r -uc -b
cd ..
cd gst-plugins-ugly1.0-1.2.1/
dpkg-buildpackage -r -uc -b
cd ..
cd gst-libav1.0-1.0.8/
dpkg-buildpackage -r -uc -b
cd ..
# インストール
sudo dpkg -i *.deb
これでGStreamer1.0がUbuntu 12.04で使えるようになりました!
明日も @aKenjiKato です。
よろしくお願いいたします。