[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 次のページ ]


Debian 新メンテナガイド
第 2 章 - はじめの一歩


自分のパッケージを作成してみましょう (それよりずっと良いのは、既存のものを引き取ってみることです)。


2.1 プログラムの選定

おそらく、作成したいパッケージを選んだことと思います。まず最初にしなければならないことは、ディストリビューションのアーカイブにそのパッケージがすでにあるかどうか、aptitude を使って確認することです。

パッケージの情報は、パッケージ検索ページDebian パッケージ追跡システムでもチェックすることができます。

もしパッケージが既に存在していたら、インストールしましょう! :-) もしそのパッケージが「みなしご化」されていたら -- つまりメンテナが Debian QA Group になっていたら、そのパッケージがまだ利用可能であれば、そのパッケージを引き取ることができるかもしれません (Debian Bug report logs: Bugs in package wnpp in unstable で所有者の状況をチェックしてください)。関係しているメンテナが "引き取り依頼" (RFA) を出しているパッケージを引きとるのもアリです。

みなしご化された、あるいは RFA されたパッケージについて、いくつか違った見方ができるようになっています:

注釈ですが、Debian にはすでにほとんどの種類のプログラムが含まれていること、Debian アーカイブにすでに含まれているパッケージの数は、アップロード権限をもつユーザの数よりもはるかに多いこと、に注意しておくのは重要です。従って、すでにアーカイブに含まれているパッケージへの作業は、他の開発者からはるかに喜ばれます (し、よりスポンサーしてもらえる見込みがあります)。 [4]。作業のやり方はいろいろあります。

もしパッケージを引き取ることができるなら、(apt-get source パッケージ名 などの方法で) ソースを入手して、調べてみてください。残念ながらこの文書では、パッケージを引き取ることについて、わかりやすく説明してはいません。ありがたいことに、既に誰かがあなたのためにパッケージを準備してくれたわけですから、そのパッケージがどのように動作するのか理解することは、それほど難しくはないでしょう。とはいえ、そうした場合でもこの文書に書かれた多くのアドバイスはそのまま通用しますから、このまま読み進めていってください。

もしあなたの選んだプログラムがまだパッケージ化されていないもので、それを Debian に入れたいと決めたなら、以下のチェック項目について確認してください。

もちろんこれらのことは安全策というだけのことです。setuid デーモンで何かミスしてしまい、怒り狂ったユーザから抗議殺到という事態を回避したいのです。パッケージ化についてもっと経験を積めば、こうしたパッケージも 作れるようになるでしょう。しかし、どんなに老練な開発者だって、何か分からないことがあれば debian-mentors@lists.debian.org メーリングリストで質問するのです。そこには喜んで手助けしてくれる人々がいます。

もっと詳しい話は、Debian 開発者リファレンスに載っていますので、そちらを参照してください。


2.2 プログラムの入手と検証

さて、最初にすべきことは、オリジナルのソースコードを探してダウンロードすることです。ここでは作者のホームページから、すでにソースファイルを入手したとして話を進めます。フリーな Unix 用プログラムのソースは、ふつう .tar.gz 拡張子が付いた tar+gzip 形式や、.tar.bz2 拡張子が付いた tar+bzip2 形式で提供されています。この中にはたいてい、すべてのソースが入った プログラム名-バージョン というサブディレクトリがあります。

該当ソースの最新版が Git や Subversion、CVS リポジトリのような VCS で提供されているなら、取得するのに "git clone"、"cvs co" や "svn co" してから、"--exclude-vcs" オプションを使って自分で tar+gzip 形式に再パックする必要があります。

プログラムのソースが、他の種類のアーカイブ (例えば、.Zで終わるファイル名や、.zip[5]) の場合も、適切なツールで展開してから再パックしてください。

さて本稿では、gentoo という X GTK+ ファイルマネージャを例に説明します[6]

自分のホームディレクトリ以下に debiandeb、または何か適当な名前のサブディレクトリを作りましょう (今回の場合には ~/gentoo/ としても良いでしょう)。ダウンロードしたアーカイブをここにコピーし、"tar xzf gentoo-0.9.12.tar.gz" を実行して展開してください。この時、一見無関係に思えるようなものも含めて、エラーは一切発生しないことを確認してください。もしエラーが起きたら、それは他の人々のシステム上で展開する際にも、おそらくエラーが起きるということです。そしてそこで使われている展開用のツールは、こういった異常を無視するかも知れませんし、無視しないかもしれません。あなたのコンソール画面では、以下のように見えているでしょうか。

     $ mkdir ~/gentoo ; cd ~/gentoo
     $ wget http://www.example.org/gentoo-0.9.12.tar.gz
     $ tar xvzf gentoo-0.9.12.tar.gz
     $ ls -F
     gentoo-0.9.12/
     gentoo-0.9.12.tar.gz

さて、gentoo-0.9.12 という別のサブディレクトリができました。展開したディレクトリに移動して、提供されているドキュメントを徹底的に読みましょう。通常は README*, INSTALL*, *.lsm, *.html といった名前のファイルです。それらの文書の中に、どうやったら正しくコンパイルできるのか、どうインストールすればよいのかといった情報が見つかるはずです (おそらく /usr/local/bin にインストールするものとして説明されていますが、そうしてはいけません。これについては 指定した場所へファイルをインストールする, 第 3.3 節 を参照してください)。

シンプルなプログラムには Makefile ファイルが付属していて、単純に "make" でコンパイルできます。"make check" をサポートしていて、含まれているセルフテストを実行できるものもあります。目的のディレクトリへのインストールは一般に "make install"によって実行されます。

さあ、試しにプログラムをコンパイルし、実行してみましょう。 インストールや実行の際にちゃんと動作するかどうか、そして他の何かを壊してしまっていないかを確認してください。

それから、たいていの場合は "make clean" ( "make distclean" を使えるならそのほうが良いです) を実行すると、ビルド用のディレクトリをきれいにしてくれます。さらに "make uninstall" を実行すると、インストールされたファイルをすべて削除できることさえもあります。


2.3 自由に移植できるプログラム

多数の自由なプログラムが、CC++ 言語で書かれています。これらの多くは、異なるプラットフォーム間で移植を可能とするために Autotools や CMake を使っています。こういったツールは、Makefile やその他必要なソースファイルを生成するのに使われます。その後、そういったプログラムは通常の "make; make install" でビルドされます。

AutotoolsAutoconfAutomakeLibtoolgettext から成る GNU のビルドシステムです。configure.acMakefile.amMakefile.in ファイルがあれば、そういうソースであることがわかります。[7]

Autotools を使ったワークフローの最初の一歩は、上流の作者がソースディレクトリで "autoreconf -i -f" を実行し、生成されたファイルと一緒にこのソースを配布することです。

     configure.ac-----+-> autoreconf -+-> configure
     Makefile.am -----+        |      +-> Makefile.in
     src/Makefile.am -+        |      +-> src/Makefile.in
                               |      +-> config.h.in
                           automake
                           aclocal
                           aclocal.m4
                           autoheader

configure.acMakefile.am ファイルを編集するには、autoconfautomake についての知識が少々必要になります。"info autoconf" と "info automake" を参照してください。

Autotools のワークフローの次のステップでは、通常はこの配布されているソースをユーザが入手して、ソースディレクトリで "./configure && make" を実行することで、プログラムを binary にコンパイルします。

     Makefile.in -----+                +-> Makefile -----+-> make -> binary
     src/Makefile.in -+-> ./configure -+-> src/Makefile -+
     config.h.in -----+                +-> config.h -----+
                               |
                config.status -+
                config.guess --+

デフォルトでファイルがインストールされる場所など、Makefile ファイルにある内容の多くは、コマンドオプションを使って変更することができます。例えば "./configure --prefix=/usr" のように。

必要ではないとしても、"autoreconf -i -f" をユーザとして実行して、configure や他のファイルを更新すると、ソースの互換性が改善される場合があります。

CMake はまた別のビルドシステムです。CMakeLists.txt ファイルがあれば、そういうソースだとわかります。


2.4 パッケージ名とバージョン

パッケージ化の作業は完全にクリーンな (オリジナルのままの) ソースディレクトリ、簡単に言えば新しく展開したソースから始めるべきです。

パッケージをきちんと作るためには、プログラム名がすべて小文字になるよう、(まだそうなっていなければ) オリジナルの名前から変更しておかなければいけません。またソースディレクトリ名を パッケージ名-バージョン に変更しておきましょう。

もしプログラムの名前が二語以上で構成されていたら、一つの語につなげるか省略形にしましょう。 例えば、"John's little editor for X" というソフトウェアならば johnledx とか jle4x というようにしましょう。あまり長すぎない程度、 せいぜい 20 文字くらいまでの長さで、適当に決めていただければ結構です。

プログラムの正確なバージョンもチェックしましょう (パッケージのバージョンに含めるために)。もしそのソフトウェアが「バージョン X.Y.Z」という形式で番号付けされておらず、ある種の日付で区別されている場合には、新しいバージョン番号が大きくなっているようなら、その日付をバージョン番号として自由に使ってください。開発元が使っているのと同じバージョン番号を使うのがベストではありますが、それが09Oct23 といった形式の場合は、それを 20091023 といった YYYYMMDD 形式に変換して、dpkg プログラムでのアップグレードが適切な順番でできるようにする必要があるかもしれません。[8]

およそバージョン番号に使えそうな情報がまったくないと言う場合、上流メンテナに連絡をとって彼らが何か他のリビジョン管理手段を使っているかどうか聞いてみましょう。


2.5 最初の Debian パッケージ

次のようにして、シェルの環境変数 $DEBEMAIL$DEBFULLNAME を設定して、パッケージに使うあなたの名前と email アドレスを、多くの Debian メンテナンスツールが認識できるようにしましょう[9].:

     $ cat >>~/.bashrc <<EOF
     DEBEMAIL=your.email.address@example.org
     DEBFULLNAME="Firstname Lastname"
     export DEBEMAIL DEBFULLNAME
     EOF

次のように dh_make コマンドを実行して、最初の Debian パッケージを作ってみましょう。

     $ . ~/.bashrc
     $ cd ~/gentoo/gentoo-0.9.12
     $ dh_make -f ../gentoo-0.9.12.tar.gz

当然ですが、ファイル名はあなたのオリジナルのソースアーカイブの名前と置き換えてください。[10] 詳細は、dh_make(1) を参照してください。

情報がいくつか表示されるでしょう。どんな種類のパッケージを作ろうとしているのかを尋ねられます。Gentoo は単一のバイナリパッケージです - バイナリを一つだけ生成するので、一個の .deb ファイルです - なので、"s" キーで最初の選択肢を選びましょう。表示された情報をチェックして、確認のために "ENTER" を押してください。[11]

dh_make を実行した後、上流の tarball のコピーを、親ディレクトリに gentoo_0.9.12.orig.tar.gz として作成します。次に、それに伴ってネイティブではない Debian ソースパッケージを debian.tar.gz として作成します。

     $ cd ~/gentoo ; ls -F
     gentoo-0.9.12/
     gentoo-0.9.12.tar.gz
     gentoo_0.9.12.orig.tar.gz

この gentoo_0.9.12.orig.tar.gz ファイル名がもっている 2 つの特徴に注意してください:

ソース中のdebianディレクトリにたくさんのテンプレートファイルが作成されていることにも注意が必要です。これらについては、debian/ディレクトリ以下に無くてはならないファイル, 第 4 章debianディレクトリにあるその他のファイル, 第 5 章 で説明します。パッケージ作成が自動的な過程ではないことも理解しておかねばなりません。ソースコードの変更, 第 3 章 のように、開発元のソースを Debian 向けに変更する必要があります。こういった作業の後で、パッケージの構築, 第 6 章 のように正しいやり方で Debian パッケージをビルドし、パッケージのエラーの検証, 第 7 章 のようにチェックし、そして パッケージをアップロードする, 第 8 章 のようにしてアップロードする必要があります。これらすべてのステップについてこれから説明します。

繰り返しますが、新規メンテナのあなたには、以下のような複雑なパッケージの作成はお勧めできません。

実際には作業自体はそれほど大変ではないのですが、多少知識が余分に必要になります。そのため、ここではその作業について 一切説明しません。

作業中にテンプレートファイルを間違って消した場合は、Debian パッケージのソースツリーで dh_make--addmissing オプションつきで再度実行することで修復できます。

既存のパッケージの更新は、古いテクニックが使われていたりして、やっかいな場合があります。基本を学習するために、今のところは新規パッケージの作成を続けてください。後ほど、パッケージの更新, 第 9 章 で取り上げて説明します。


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 次のページ ]


Debian 新メンテナガイド

version 1.2.25, 2010-12-21 14:06:56 UTC

Josip Rodin joy-mg@debian.org

翻訳:倉澤 望 nabetaro@debian.or.jp
翻訳:八津尾 雄介 yyatsuo@gmail.com
翻訳:佐々木 洋平 uwabami@gfd-dennou.org
翻訳:倉敷 悟 lurdan@gmail.com
翻訳:青木 修 osamu@debian.org