Ubuntu Weekly Recipe

第16回 パッケージの使いこなし:必要なファイルの含まれるパッケージの探し方, Debianパッケージの流用

この記事を読むのに必要な時間:およそ 3 分

最初に,パッケージのビルドに最低限必要な環境を整えます。以下の手順でパッケージをインストールしてください(もちろんSynapticからでもインストールできますが,今回は端末の中心の操作になりますので,コマンドで操作した方が早いはずです⁠⁠。

$ sudo apt-get update
$ sudo apt-get install fakeroot build-essential dpkg-dev devscripts

また,ほとんどの場合,Debianパッケージを流用する場合はtestingではなくsid(unstable)にあるものを使うことになるでしょう。以下のapt-lineを/etc/apt/sources.listの末尾に追加してください。

# Debian packages
deb-src http://ftp.jp.debian.org/debian unstable main contrib

パッケージの検証に利用する公開鍵を取得します。

gpg --recv-key --keyserver wwwkeys.eu.pgp.net C4C7264B
gpg --export C4C7264B | sudo apt-key add - 

この状態でapt-get updateを行うと,以下のようなヒットメッセージが出力されます。これでDebianパッケージのソースを取得する準備が整いました。

ヒット http://ftp.jp.debian.org unstable Release.gpg
ヒット http://ftp.jp.debian.org unstable Release
ヒット http://ftp.jp.debian.org unstable/main Sources
ヒット http://ftp.jp.debian.org unstable/contrib Sources

以下のような手順でapt-get sourceコマンドでパッケージを取得することで,Debianパッケージのソースが展開されます。以下は"jd"というソフトウェアのパッケージを取得しています。

apt-get sourceを行うことでカレントディレクトリにdsc・tarボール・diffが取得され,さらにソースを展開したディレクトリが作成されますので,~/直下などでは作業を行うべきではありません。以下の例では ~/src/deb というディレクトリを作成し,そこで展開しています。

$ mkdir -p ~/src/deb/
$ cd ~/src/deb/
$ apt-get source jd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
509kB のソースアーカイブを取得する必要があります。
取得:1 http://ftp.jp.debian.org unstable/main jd 1:1.9.9-080415-2 (dsc) [1142B]
取得:2 http://ftp.jp.debian.org unstable/main jd 1:1.9.9-080415-2 (tar) [497kB]
取得:3 http://ftp.jp.debian.org unstable/main jd 1:1.9.9-080415-2 (diff) [10.2kB]
509kB を 0s で取得しました (1696kB/s)
dpkg-source: extracting jd in jd-1.9.9-080415
dpkg-source: unpacking jd_1.9.9-080415.orig.tar.gz
dpkg-source: applying ./jd_1.9.9-080415-2.diff.gz

ビルドを行うためには多くのライブラリが必要になりますが,apt-get build-depを用いることで,Build Dependsに定義されているパッケージをまとめてインストールすることができます。

$ sudo apt-get build-dep jd

ビルドに必要なパッケージが整ったら,debuildを用いてパッケージをビルドします。-r fakerootを指定することで,root権限なしにパッケージを作成することができます。

ビルドが終了したら,⁠カレントディレクトリの一つ上」のディレクトリにパッケージが作成されています。以下の例ではビルド後に cd .. することで,カレントディレクトリにパッケージが存在するようにしています。

$ cd jd-1.9.9-080415/
$ debuild -r fakeroot
$ cd ..
$ ls *deb
jd_1.9.9-080415-2_i386.deb

ビルドされたパッケージは,次の手順でインストールすることができます。

$ sudo dpkg -i jd_1.9.9-080415-2_i386.deb

自動的なビルド&インストール

上述の操作はapt-get sourceコマンドに "--compile" オプションを与えることで,自動的に実行させることもできます(-b・--buildなどでも同じ挙動です⁠⁠。

日常的にDebianからパッケージを流用する場合は,以下のように操作するのが簡便でしょう。

$ sudo apt-get source --compile jd
$ ls -altr *deb
(ビルドされたパッケージ名を確認)
$ sudo dpkg -i jd_1.9.9-080415-2_i386.deb

なお,いずれの方法を取る場合も,リリース間の移行の障害になる可能性がありますので,アップグレードを行う前に,必ずパッケージを削除することを忘れないでください。削除はapt-get removeで行うことができます。

$ sudo apt-get remove jd

より適切な運用はUbuntu用にパッケージの一部をカスタマイズし,バージョン番号などにDebian由来であることを示す文字列を含めることですが,簡易な運用であればこの程度でも問題ないでしょう。ただし,あくまで「裏技」であることを忘れないでください。

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。