David
Smith
![]() |
Debian パッケージ作成にようこそ! dpkg のパッケージ、 いわゆる Debian パッケージの作成を分かりやすく、 実例の分析に基づいて
説明する。 データーだけのパッケージは何かと言えばフォントやドキュメンテーションや設定ファイルなどのパッケー
ジを指すことだ。 要するにプログラムとライブラリではないパッケージだと言える。 今回、 GNOME
デスクトップの背景ファイルの集合、 gnome-backgrounds の構成を解析する。 Debian Popularity
Contest*4 に
よると現在 gnome-backgrounds が殆ど全部の GNOME インストールに含まれていて GNOME を使用していれば
gnome-backgrounds も入っているはず。 背景ファイルだがパッケージの構成に複雑の部分もあると思うから詳細までみてみ
よう。
まず、 Debian New Maintainer’s Guide *5
の ペ ー ジ を 開 い て お い た ら い い で し ょう 。 不 明 な 点 が あ った 場 合 、
New Maintainer’s Guide に分かりやすく書いているだろう
し、 質問は何処まで送ればいいか教えるのだ。
それから gnome-backgrounds のソースパッケージをダウンロードしよう。
準備の最後にパッケージの構成に必要な依存パッケージをインストールしなければビルドが出来ないので以下のコマンドを
インストールしよう。
今のところ、 apt-get source がソースパッケージを gnome-backgrounds-2.20.0 というディレクトリに展開した。 そのディレク
トリの中には debian/ディレクトリがあり、 そこにパッケージ作成の設定ファイルがある。 パッケージによるファイル数が異な
るが、 gnome-backgrounds は最低限に近い。
この中で changelog、 control、 copyright、 rules はあらゆるパッケージに必要です。
gnome-backgrounds の最新バージョンの changelog を見てみましょう。
かなり簡単。 だけど、 空白と日付の形式を厳守しなければビルドするときにエラーが発生するから注意。
*6
Gnome プロジェクトは規模が大きいのでメンテに関われている人が多い。 debian/controlにアップロード出来る人達の名
前が記載されているのだが人の名前が多すぎて直接管理しにくいから@GNOME_TEAM@という変数だけを書いている。 そし
て別のファイルにその人達の名前を書いて、 発行時にスクリプトによって変数を変換するわけだ。 必要がなくて複雑かもしれな
いけど Debian といえば自由主義ですね。
では debian/controlをみてみよう。
第一段落にソースパッケージを記述する。 apt-get source と apt-get buildd-dep を実行する時、 ソースパッケージの情報を
使っている。 9 行目以降に作成する gnome-background のバイナリパッケージを定義している。 順番に関してはソースパッ
ケージが必ず最初に来るそして Source 又は Package はそれぞれの段落の最初の 1 行に書く。 それ以外の中身の項目は特に決
まった順番がない。
Section と Priority との項目は少しややこしいかもしれない。 決まった選択肢の中から1つしか選べないので合わない場合がある
けど gnome-backgrounds の場合はぴったり、 gnome で optional。 選択肢の詳しい情報は Debian Policy Manual に書いてあ
る。 次にビルドのための依存関係パッケージが書いてある。 殆どのパッケージにはビルドするための依存パッ
ケージと利用するための依存パッケージが異なる。 例えば普通のプログラムの場合に C/C++ のヘッダー
がビルド時に必要けど実行するのに要らないとして、 Debian パッケージの構成にも同じことがある。
*8gnome-backgrounds
がビルド時に使ってる依存パッケージがより典型的なのでそれぞれ少し説明する。
ソースパッケージの段落の最後に Standards-Version という項目は Debian Policy Manual の何バージョンに準拠している
かを述べる。
続いてバイナリパッケージの段落になる。 パッケージ名が最初に来る。 それから対応するアーキテクチャーを書く。 データー
だけのパッケージの場合に尤も all にしてもいい。 今度のバイナリパッケージ作成発表に all の他を説明する。 その他は
Depends ラインに runtime の依存関係のパッケージ(この場合は自動的に抽出される) が書いていて、 最後にパッケージの記
述。 詳しくは Debian Policy Manual を参照してください。
gnome-backgrounds の debian/rulesをみよう。
殆ど以前に定義しているルールを再利用しているしかないです。 1 つだけのこのパッケージに特別の追加があり、 それは
binary-post-install/gnome-backgrounds::のところ。 意味としては gnome-backgrounds というバイナリパッケージを作って
から、 必要ないのでそのディレクトリを削除する。
上記を設定してから、 パッケージのビルド自体は dpkg-buildpackage 又は debuild コマンドだけで出来る。 設定以来の変更を
debian/changelogファイルに記録するとバージョン管理がで要る。 dpkg-buildpackage の出力が長いためここに写さないけ
ど自分で試してみてください。
第
38 回東京エリア Debian 勉強会 2008 年 3 月6.1 準備
6.2 基本の Debian パッケージファイル
合計 36
-rw-r--r-- 1 dds dds 3755 2008-03-08 16:21 changelog
-rw-r--r-- 1 dds dds 2 2008-03-08 16:21 compat
-rw-r--r-- 1 dds dds 1022 2008-03-10 15:11 control
-rw-r--r-- 1 dds dds 771 2008-03-08 16:21 control.in
-rw-r--r-- 1 dds dds 1780 2008-03-08 16:21 copyright
-rwxr-xr-x 1 dds dds 368 2008-03-08 16:21 rules
-rw-r--r-- 1 dds dds 145 2008-03-08 16:21 watch
6.2.1 debian/copyright
debian/copyrightは上流ソースコード、 データーなどの著作権を認めるためのファイル。 形式は自由。 パッケージビルド
ツールに対して必須なので自分専用でも自分の会社内専用のパッケージでも一応書かなければならない。 最低限として「All
Rights Reserved」 と書いてもいい。 gnome-backgrounds の debian/copyrightファイルが長すぎるのでここには示さない
けど見てみてください。 パッケージをインストールすると /usr/share/doc/パッケージ名/copyrightにインストールさ
れる。
6.2.2 debian/changelog
debian/changelogにはパッケージのバージョンを記録する。 必ずしもパッケージのバージョンが上流のバージョンに一致
することではないので必須になっている。 それにパッケージの最新バージョン番号はこのファイルの最初の 1 行目から直接に抽
出される。
* New upstream release.
-- Sebastian Dr\"oge <slomo@debian.org> Sat, 22 Sep 2007 09:49:38 +0200
6.2.3 debian/control
debian/controlにはパッケージ名、 Maintainer、 依存のパッケージなどのメタ情報が記している。 gnome-backgrounds の
場合、 独特として debian/controlと共に debian/control.inファイルもある。 debian/control.inは Debian のパッ
ケージツールに対して関係ないから無視しても良い。 でも目的は何かと言えば説明したい。
Section: gnome
Priority: optional
Maintainer: Sebastien Bacher <seb128@debian.org>
Uploaders: @GNOME_TEAM@
Build-Depends: debhelper (>= 5), cdbs, gnome-pkg-tools
Build-Depends-Indep: libxml-parser-perl
Standards-Version: 3.7.2
Package: gnome-backgrounds
Architecture: all
Depends: ${misc:Depends}
Description: a set of backgrounds packaged with the GNOME desktop
This is a collection of desktop backgrounds created with GNOME users in mind.
It contains the following backgrounds:
.
[後略]
6.2.4 debian/rules
debian/rulesでパッケージのビルドがどう行われるかを定義する。 中身の形式は完全自由だが外部のツールが Policy
Manual に書いている呼び出し方を依存している。 それで Makefile 形式を用いているパッケージの割合は 100% に近い。 しか
し Makefile なのに cdbs を使っているので普通な Makefile に余りにも似ていない。 時間と動力を節約したい方は是非試してく
ださい。
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/gnome.mk
include /usr/share/cdbs/1/rules/simple-patchsys.mk
include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk
-include /usr/share/gnome-pkg-tools/1/rules/gnome-get-source.mk
binary-post-install/gnome-backgrounds::
rm -rf debian/gnome-backgrounds/usr/share/locale
6.2.5 debian/watch
debian/watch ファイルは不要だが使ったら自動的に新しい上流のソフトを取得してビルドする仕組みが使
える。
6.3 パッケージビルド
____________________________________________________________________________________________