[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 次のページ ]
この文書では、Debian パッケージを作るにはどうしたらよいか、一般的な Debian ユーザと開発者予備軍を対象に解説しようと思います。小難しい専門用語はできるだけ避けて、実用的な例を多く用いて説明していくつもりです。ことわざにもあるように、百聞は一見にしかずですからね!
この文書は、Debian squeeze リリース用に更新されています。[1]
Debian を最高峰の Linux ディストリビューションたらしめている理由のひとつが、そのパッケージ管理システムです。すでに膨大な数のソフトウェアが Debian 形式で配布されていますが、まだパッケージ化されていないソフトウェアを、インストールしなければならないこともあるでしょう。あるいは、どうやったら自分でパッケージが作れるんだろう、とか、それはとても難しいことなんじゃないか、などと考えたことがあるかもしれません。まあ、もしあなたが本当に駆け出しの Linux ユーザなら難しいでしょうが、でもそうだったら今ごろこんな文書読んでませんて :-) パッケージを作成するには、Unix のプログラミングについてある程度知っている必要がありますが、神様みたいに精通している必要は全くありません。
ただ、確かなことがひとつあります。Debian パッケージをきちんと作成し、保守していくには、手間を惜しんではならない、ということです。間違えないでください。Debian のシステムをうまく動かしていくためには、メンテナは技術的に有能であるだけでなく、勤勉であることも必要なのです。
この文書では (最初は関係無さそうに思えることまで) どんな細かい手順も余さず説明します。ともかく一つ作ってしまえば、あとは次のリリース、そして他のパッケージへと経験を積んでいけばよいのです。
パッケージ作成において手助けが必要なら、相談するには, 第 1.4 節を読んでください。
この文書の最新版は常に以下の場所からネットワーク経由で入手できます。http://www.debian.org/doc/maint-guide/
また、「maint-guide
」パッケージにも含まれています。日本語訳は「maint-guide-ja
」パッケージの中にあります。
何はさておき、開発に必要なパッケージがきちんとインストールされていることを確認せねばなりません。以下のリストには「essential」または「required」なパッケージが含まれていないことに注意してください。要するに、これらのパッケージは既にインストールされていることを前提としています。
以下のパッケージは Debian の「標準」(standard) インストール構成に含まれており、すでに (それらが依存する他のパッケージといっしょに) システムに含まれているはずです。しかし、念のために「aptitude show パッケージ名」で確認しておきましょう。
開発用システムにインストールする一番重要なパッケージは、build-essential
です。これをインストールしようとすると、基本的なビルド環境に必要な他のパッケージを
集めてくるでしょう。
パッケージの種類によっては、必要になるのはこれですべてかもしれません。ただ、すべてのパッケージ作成に必須ではないにせよ、インストールしておくと便利だったり、パッケージによっては必要になったりするパッケージ群があります:
file
-
この便利なプログラムを使うと、そのファイルがどういう形式のものか判定することができます
(詳しくは file(1)
を参照)。
patch
-
このとても有用なユーティリティは、(diff
プログラムによって生成された)
オリジナルとの差分が列挙されたファイルを読み込んでオリジナルのファイルに適用し、パッチが当てられたバージョンを作成します。
(詳しくは patch(1)
を参照)。
perl
- Perl は今日の UNIX
系システムにおいてもっとも使われているインタープリタ型スクリプト言語のひとつで、その強力さはしばしば「Unix
のスイス軍用チェーンソー」と形容されるほどです
(詳しくは perl(1)
を参照)。
python
- Python は Debian
システムにおいてもっとも使われているもう一つの
インタープリタ型スクリプト言語で、並外れたパワーと非常に明快な書式を
兼ねそなえています。 (詳しくは python(1)
を参照)。
autoconf
と automake
と autotools-dev
-
多くの新しいプログラムが、これらのプログラムを使って前処理される設定スクリプトや
Makefile
を利用しています。 (詳しくは
"info autoconf", "info automake"
を参照)。 autotools-dev
には、特定の auto
ファイルの最新版と、
そういったファイルを使う最善の方法についてのドキュメントが含まれています。
dh-make
と debhelper
- dh-make
はパッケージのひな型を用意するのに必要となります。またこのひな型ではパッケージを生成するために
debhelper
ツールをいくつか使います。これらを使わなくてもパッケージ作成は可能ですが、初めてパッケージを作る方には利用を強くお勧めします。パッケージを作るのも、以後パッケージを管理するのもずっと簡単になるからです。
(詳しくは
dh_make(1)
、debhelper(1)
、/usr/share/doc/debhelper/README
を参照) [2]
devscripts
-
このパッケージはメンテナにとって便利であると思われる有用で優れたスクリプトを含んでいますが、だからといってパッケージを作成するために必須というわけではありません。このパッケージが推奨
(Recommends)、あるいは提案 (Suggests)
しているパッケージは、一見の価値があります。(詳しくは
/usr/share/doc/devscripts/README.gz
を参照)
fakeroot
-
このユーティリティを使うと、ビルドの過程で何度か必要となる
root 権限をエミュレートすることができます。(詳しくは
fakeroot(1)
を参照)
gnupg
-
このツールを使うと、パッケージに「デジタル
署名」を付けることができます。もしあなたが自分の作成したパッケージを他の人々に配布したいのなら、これは特に重要です。また、Debian
ディストリビューションにあなたの作成したパッケージが含まれるようになった時には、確実にこのデジタル署名をすることになります。(詳しくは
gpg(1)
参照)
gfortran
- GNU Fortran 95
コンパイラ。あなたのプログラムが Fortran
言語で書かれている場合に必要です。(詳しくは
gfortran(1)
参照)
gpc
- GNU Pascal コンパイラ。あなたのプログラムが
Pascal
言語で書かれている場合に必要です。ここで注目に値するのは
fp-compiler
Free Pascal
コンパイラで、こちらもまたこの作業に適しています。(詳しくは
gpc(1)
、 ppc386(1)
参照)
xutils-dev
- ある種のプログラム (通常
X11のために開発されたもの)
は、これらのプログラムを利用して、マクロ関数の組み合わせから
Makefile
群を生成します。(詳しくは
imake(1)
、 xmkmf(1)
参照)
lintian
- これは Debian
パッケージチェッカで、あなたがビルドしたパッケージを調べて、その中にありがちなミスが見つかったらそれを指摘し、その問題について説明してくれます。(詳しくは
lintian(1)
、
/usr/share/doc/lintian/lintian.html/index.html
参照)
pbuilder
- このパッケージには chroot
環境の作成や保守に使用されるプログラムが含まれます。この
chroot
環境下で Debian
パッケージをビルドすることで適切なビルド依存を確認して
FTBFS (Fails To Build From Source)
バグを回避することができます。(詳しくは
pbuilder(8)
と pdebuild(1)
参照)
patchutils
- このパッケージには、lsdiff
、
interdiff
や filterdiff
といったパッチを扱うユーティリティが含まれています。
quilt
-
このパッケージは、一連のパッチそれぞれの変更点を追跡して、その管理を補助するものです。パッチはスタックとして論理的に構成されていて、スタックに分け入って、簡単に当てたり
(=push) 外したり (=pop)
刷新したりすることができます。(詳しくは
quilt(1)
、 /usr/share/doc/quilt/README.Debian
参照)
git
-
このパッケージは人気のあるバージョン管理システムで、大規模なプロジェクトを素早く、効率的に扱えるように設計されています。知名度の高い多数のオープンソースプロジェクトで使われており、特に有名なものとして
Linux カーネルがあります。(詳しくは git(1)
、
/usr/share/doc/git-doc/index.html
参照)
以下は、この文書と合わせて読むべきとても重要な文書です。
debian-policy
- Debian
ポリシーマニュアル
には、Debian
アーカイブの構造と内容、OS
の設計に関するいくつかの論点、あるいは Filesystem Hierarchy
Standard
(個々のファイルやディレクトリがどこにあるべきかを規定した文書)
についてなどいろいろ載っています。さしあたって重要なのは、ディストリビューションに含まれるためにそれぞれのパッケージが満たすべき必要条件の説明です
(詳しくは
/usr/share/doc/debian-policy/policy.html/index.html
参照)。
developers-reference
[3] - Debian
開発者リファレンス
には、例えばアーカイブの構造、パッケージ名の変更方法、パッケージの選び方、メンテナを降りるにはどうしたらよいか、どうやって
NMU
をするか、バグとのつき合い方、パッケージ作成のベストプラクティス、いつどこにアップロードすればよいかなどなど、特に技術的な事柄以外のパッケージ化についてのありとあらゆる情報がここにあります。(詳しくは
/usr/share/doc/developers-reference/
参照)。
Autotools
チュートリアル
は、Autoconf、Automake、Libtool や
gettext を最も重要な構成要素としてもつ GNU Autotools
として知られる GNU ビルドシステム
の大変よい手引き書です。
gnu-standards
- このパッケージには、GNU
プロジェクトからの文書が 2 つ含まれています。GNU
コーディング標準
と、GNU
ソフトウェアのメンテナ向け情報
です。Debian
ではこれらに従うことは求められませんが、ガイドラインまたは常識としても有用です。(詳しくは
/usr/share/doc/gnu-standards/standards.html
と
/usr/share/doc/gnu-standards/maintain.html
参照)
この文書が、Debian ポリシーマニュアルや Debian
開発者リファレンスの記述と矛盾している場合は、そちらが正解です。maint-guide
パッケージにバグレポートをしてください。
上記の簡単な説明は、それぞれのパッケージが何をするのか紹介するだけのものです。先に進む前にどうかそれぞれのプログラムに付属の文書を徹底的に熟読し、標準的な使い方だけでも理解しておいてください。きついと思われるかも知れませんが、あとになればきっと 読んでてよかったなあ と思うことでしょう。
パッケージには 2 種類あります。
ソースパッケージ:
ソースパッケージはいくつかのファイルからなっていて、コンパイルすることで実行プログラムや整形した文書に処理できるコードとデータを含んでいます。通常は、*.orig.tar.gz
と、*.debian.tar.gz
(あるいは
*.diff.gz
)、それから
*.dsc
の組み合わせです。他のアーカイブ方法や圧縮方法が使われる場合もあります。
バイナリパッケージ:
バイナリパッケージには、実行プログラムと整形された文書が含まれています。通常は、一般的な
Debian システム用には *.deb
、Debian
インストーラ向けには *.udeb
という形になっています。
プログラムのソースとプログラムのソースパッケージ、のような用語を混同しないようにしてください!
Debian 界隈で使われる役割名がいくつかあります。
upstream author (開発元の作者): 元のプログラムを作った人です。
upstream maintainer (開発元のメンテナ): 現在プログラムをメンテナンスしている人です。
maintainer (メンテナ): プログラムの Debian パッケージを作成している人です。
sponsor (スポンサー): メンテナのパッケージを、内容をチェックした後で公式 Debian パッケージアーカイブにアップロードするのを手伝う人です。
mentor (指導役): 新米メンテナがパッケージを作成したりするのを手助けする人です。
Debian Developer (Debian 開発者) (DD): Debian のメンバーです。公式 Debian パッケージアーカイブへのアップロード権限をすべてもっています。
Debian Maintainer (Debian メンテナ) (DM): 公式 Debian パッケージアーカイブへのアップロード権限を限定的にもっている人です。
Debian 界隈では、いくつかのバージョン名が使われます。
上流ソースのバージョン: 上流ソースのバージョンは、version と呼ばれます。
Debian リビジョン: Debian がつけるパッケージのリビジョンは、revisionと呼ばれます。
Debian パッケージバージョン: Debian のパッケージバージョンは、次のように呼ばれます。
ネイティブの Debian バイナリパッケージと Debain のソースパッケージでは、version です。
ネイティブではない Debian バイナリパッケージでは、version-revision です。
用語についての詳細が必要であれば、他のマニュアルを読んでください。
一夜にして正式な Debian 開発者 (DD)
になることはできません。これは技術的なスキルだけに留まらない何かが必要となるからです。がっかりしないでください。それが他の人にとっても便利なものなら、メンテナとして
スポンサー を通して、あるいは Debian
メンテナ
として、パッケージをアップロードすることは可能です。ここで述べたスポンサーとは正式な
Debian 開発者で、メンテナがパッケージを Debian
アーカイブにアップロードするのを補助する人を指します。この手順に関する詳細は
Debian
新規メンテナのコーナー
にあります。
正式な Debian 開発者になるのに新しいパッケージの作成は必須ではないことに注意してください。既存のパッケージに対して貢献していくことでも正式な Debian 開発者への道は開かれます。多くのパッケージがよいメンテナを待っています (プログラムの選定, 第 2.1 節 を参照)。
どこか公共の場で質問しようとする前に、まずマニュアルを読んでください。このマニュアルというのは、/usr/share/doc/dpkg
、/usr/share/doc/debian
、/usr/share/doc/autotools-dev/README.Debian.gz
、/usr/share/doc/パッケージ名/*
のドキュメントや、この文書で触れるすべてのプログラムの
man
/info
ページなどを含みます。http://nm.debian.org/
にある情報すべてを参考にしてください。
小さなテストパッケージを作ることは、パッケージ作成の詳細を学ぶよい方法です。他の人がどのようにパッケージを作成しているか学ぶには、既存のよく保守されているパッケージを調べるのが一番です。
既存の文書やウェブの情報では答えが見つからないような、パッケージ作成についての質問がまだあるなら、debian-mentors@lists.debian.org
にある Debian Mentors
のメーリングリストで聞くことができます。より経験豊富な
Debian
開発者が喜んで手助けしてくれるでしょう。ただし、質問する前に少なくともある程度は文書類を読んでおくこと!
このメーリングリストについての詳細は、http://lists.debian.org/debian-mentors/
を参照してください。
バグレポート (そう、本物のバグレポートです!)
を受けとったら、レポートを効率的にさばくために、Debian バグ追跡システム
を掘り下げ、その説明文書を読む時だということがわかるでしょう。開発者リファレンスの
5.8. 'Handling bugs'
を読むよう、強くおすすめします。
他にまだ質問があれば、debian-devel@lists.debian.org
にある Debian
開発者メーリングリストで聞いてください。このメーリングリストについての詳細は
http://lists.debian.org/debian-devel/
を参照してください。
すべてうまくやったとしても、これからはお祈りの時間です。なぜか? それは、ほんの数時間 (あるいは数日) で、世界中のユーザがそのパッケージを使いはじめるからです。もし何か致命的なエラーをやらかしていたら、膨大な数の怒った Debian ユーザからメール爆弾を受けとることになります……なんて冗談ですが :-)
リラックスしてバグ報告に備えてください。なにしろ、そのパッケージが Debian ポリシーやそのベストプラクティスに完全に沿うようになるまでには、やらなくてはいけないことは沢山あるのですから (繰り返しますが、詳細は実際の文書を読んでください)。頑張ってください!
[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 次のページ ]
Debian 新メンテナガイド
version 1.2.25, 2010-12-21 14:06:56 UTCjoy-mg@debian.org
nabetaro@debian.or.jp
yyatsuo@gmail.com
uwabami@gfd-dennou.org
lurdan@gmail.com
osamu@debian.org