この文書では、Debian パッケージを作るにはどうしたらよいか、 一般的な Debian ユーザと開発者予備軍を対象に解説しようと思います。 小難しい専門用語はできるだけ避けて、実用的な例を多く用いて説明していく つもりです。ことわざにもあるように、百聞は一見にしかず ですからね!
Debian が Linux ディストリビューションの最高峰と呼ばれる までになった理由のひとつがそのパッケージ管理システムです。 すでに膨大な数のソフトウェアが Debian パッケージとして配布されて いますが、まだパッケージ化されていないソフトウェアをインストール しなければならないこともあるでしょう。 あるいは、どうやったら自分でパッケージが作れるんだろう、とか それはとても難しいことなんじゃないか、などと考えたことがあるかも しれません。まあ、もしあなたが本当に駆け出しの Linux ユーザ ならば困難な仕事でしょうが、でもそうだったら今ごろこんな文書 読んでませんて :-) パッケージを作成するには Unix のプログラミングについてある程度 知っている必要がありますが、神様みたいに精通している必要は 全くありません。
ただ、確かなことがひとつあります。Debian パッケージを きちんと作成し、保守していくには、手間を惜しんではならない、 ということです。間違えないでください。Debian のシステムを うまく動かしていくためには、メンテナーは技術的に有能である だけでなく、勤勉であることも必要なのです。
この文書では (最初は関係無さそうに思えることまで) どんな 細かい手順も余さず説明します。 ともかく一つ作ってしまえば、あとは次のリリース、そして 他のパッケージへと経験を積んでいけばよいのです。
この文書の最新版は常に以下の場所からネットワーク経由で入手できます。 http://www.debian.org/doc/maint-guide/
また、 「maint-guide
」パッケージにも含まれています。
日本語訳は「maint-guide-ja
」パッケージの中にあります。
何かを始める前に、開発作業を行なうために必要な、 以下に挙げるようなパッケージがきちんとインストールされていることを まず確かめておかなければいけません。 以下のリストには「essential」または「required」なパッケージが 含まれていないことに注意してください。 - これらのパッケージは既にインストールされていることを前提と しています。
この文書の現在のバージョンは Debian 2.2 (`potato') および 3.0 (`woody') に含まれるパッケージを対象に更新されています。
以下のパッケージは Debian の「標準」(standard) インストール 構成に含まれており、すでに (それらが依存する他のパッケージと いっしょに) システムに含まれているはずです。 しかし、念のために「dpkg -s <パッケージ名>」で確認して おきましょう。
dpkg-dev
- このパッケージには Debian ソース
パッケージを展開、構築、アップロードするために必要なツール群が 含まれています。
(詳しくは dpkg-source(1)
を参照)。
file
- この便利なプログラムを使うと
そのファイルがどういう形式のものか判定することが できます (詳しくは
file(1)
を参照)。
gcc
- GNU C コンパイラ。あなたのプログラムが
他の多くのプログラムと同様に C 言語で書かれている場合、必要と
なります。(詳しくは gcc(1)
を参照)
このパッケージは、たとえばプログラムの「素」となるオブジェクト
ファイルをアセンブル、リンクするための binutils
(binutils-doc
パッケージをインストールして 「info
binutils」すれば詳細な説明を読めます)、 C プリプロセッサ cpp
(詳しくは cpp(1)
を参照)
など他のパッケージをいくつか一緒に「引き連れて」きます。
g++
- GNU C++ コンパイラ。あなたの プログラムが C++
言語で書かれている場合に必要です。 (詳しくは g++(1)
を参照)
libc6-dev
- gcc がオブジェクトファイルを
生成してリンクするために必要な C ライブラリとヘッダファイル
が含まれています。(glibc-doc
パッケージを インストールして「info
libc」すればマニュアルが読めます)
make
- ふつう、プログラムはいくつかの手順を踏んで
生成されます。同じコマンドを何度も何度も繰り返し入力する代わりに、 make
プログラムを使えば「Makefile」を書くことで手続きを自動化
することができます。(詳しくは「info make」)
patch
- このとても有用なユーティリティは
オリジナルとの差異が列挙されたファイル (diff プログラムによって生成) を
読み込んでオリジナルのファイルに適用し、変更された (パッチの当たった)
バージョンを作成します。 (詳しくは patch(1)
を参照)。
perl
- Perl は今日の Un*x システムにおいてもっとも
使われているインタープリタ型スクリプト言語のひとつで、その強力さは
しばしば「Unix のスイス軍用チェーンソー」と形容されるほどです (詳しくは
perl(1)
を参照)。
たぶん、以下のパッケージもインストールしたくなるでしょう。
autoconf
と automake
-
多くの新しいプログラムがこれらのプログラムを使って 前処理される設定スクリプトや
Makefile を利用しています。 (詳しくは「info autoconf」および「info automake」)
dh-make
と debhelper
- dh-make
はあとで説明するパッケージのひな型を用意するのに
必要となります。またこのひな型ではパッケージを生成する ために debhelper
ツールをいくつか使います。 これらを使わなくてもパッケージ作成は可能ですが、
初めてパッケージを作る方には利用を 強く お勧めします。
パッケージを作るのも、以後パッケージを管理するのも ずっと簡単になるからです。
(詳しくは dh_make(1)
、 debhelper(1)
、
/usr/share/doc/debhelper/README を参照)
devscripts
- このパッケージは
メンテナにとって便利であると思われるいくつかの
有用で優れたスクリプトを含んでいますが、だから
といってパッケージを作成するために必須という わけではありません。 (詳しくは
/usr/share/doc/devscripts/README.gz 参照)。
fakeroot
- このユーティリティを使うと、
パッケージを作成する際に何度か必要となる root 権限を
エミュレートすることができます。 (詳しくは fakeroot(1)
を参照)
gnupg
- このツールを使うと、自分の パッケージに「デジタル
署名」を付けることが
できます。もしあなたが自分の作成したパッケージを他の
人々に配布したいのなら、これは特に重要です。 また、Debian
ディストリビューションにあなたの作成した
パッケージが含まれるようになった時には、確実にこの
デジタル署名をすることになります。 (詳しくは gpg(1)
を参照)
g77
- GNU Fortran 77 コンパイラ。あなたの プログラムが Fortran
言語で書かれている場合に必要です。 (詳しくは g77(1)
を参照)
gpc
- GNU Pascal コンパイラ。あなたの プログラムが Pascal
言語で書かれている場合に必要です。 ここで注目に値するのは
fp-compiler
、 Free Pascal
コンパイラで、こちらもまたこの作業に適して います。 (詳しくは
gpc(1)
および ppc386(1)
を参照)
imake
および xmkmf
- ある種のプログラム (通常 X11
のために開発されたもの) は、
これらのプログラムを利用して、マクロ関数の組み合わせから Makefile
群を生成します。 (詳しくは imake(1)
、 xmkmf(1)
を参照)
lintian
- これは Debian パッケージチェッカで、
あなたが構築したパッケージを調べて、その中にありがちなミスが
見つかったらそれを指摘し、その問題について説明してくれます (詳しくは
lintian(1)
、 /usr/share/doc/lintian/lintian.html/index.html
を参照)。
さて、以下はこの文書と合わせて読むべきとても重要な 文書です。
debian-policy
- Debian ポリシーマニュアル。 Debian
アーカイブの構造と内容、OS の設計に関するいくつかの問題、
あるいは「ファイルシステム体系基準」(Filesystem Hierarchy Standard、
個々のファイルやディレクトリがどこにあるべきかを規定した文書)
についてなどいろいろ載っていますが、
さしあたって重要なことは、ディストリビューションに含まれるために
それぞれのパッケージが満たすべき必要条件の説明です (詳しくは
/usr/share/doc/debian-policy/policy.html/index.html を参照)。
上記の簡単な説明は、それぞれのパッケージが何をするのか紹介
するだけのものです。先に進む前にどうかそれぞれのプログラムに
付属の文書を徹底的に熟読し、標準的な使い方だけでも理解しておいて
ください。きついと思われるかも知れませんが、あとになればきっと
読んでてよかったなあと思うことでしょう。 注意: debmake
は
dh-make と似た働きをする いくつかのプログラムを含むパッケージですが、現在では
このパッケージを 使うべきでない とされているため、 この文書では
説明しません。 debmake
について詳しく知りたい人は
Debmake マニュアル
を参照してください。
これから作ろうとするのは 2 種類のパッケージで、それぞれ ソースパッケージ、バイナリパッケージと呼ばれています。 ソースパッケージはコンパイルしてプログラムになるソースコードが 含まれます。バイナリパッケージにはでき上がったプログラムそのものです。 紛らわしい言葉ですが、「プログラムのソース」と 「プログラムのソースパッケージ」を混同しないようにしましょう! もし用語についてもっと知りたければ他のマニュアル類を参照してください。
Debian では、「メンテナ(maintainer)」と言う用語はパッケージを 作る人を示し、「上流作者(upstream author)」とはプログラムそれ自身を 作った人を指します。そして「上流メンテナ(upstream maintainer)」 というのは Debian の外部で現在プログラムそのものを管理している人の ことです。 たいていの場合、作者と上流メンテナは同一人物ですが、メンテナすらも 同じという場合もあり得ます。 もしあなたが何かのプログラムを書いて、それを Debian に入れたいと 考えたならば、Debian プロジェクトに参加してメンテナになってください。
もしディストリビューションの次のリリースにあなたのプログラムを 含めたい(そのプログラムが有用なら、ぜひ!)ならば、パッケージを 構築したあとに(あるいはしている最中でも構いませんが) 正式な Debian メンテナになる必要があります。その手続きは 開発者リファレンスで説明されていますので、そちらを参照してください。
Debian メンテナ入門
version 1.2, 6 April 2002.joy-mg@debian.org
mhatta@debian.or.jp
sano@debian.org