[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 次のページ ]
自分のパッケージを作成してみましょう (それよりずっと良いのは、既存のものを引き取ってみることです)。
おそらく、作成したいパッケージを選んだことと思います。まず最初にしなければならないことは、ディストリビューションのアーカイブにそのパッケージがすでにあるかどうか、aptitude
を使って確認することです。
パッケージの情報は、パッケージ検索ページ
や Debian
パッケージ追跡システム
でもチェックすることができます。
もしパッケージが既に存在していたら、インストールしましょう!
:-)
もしそのパッケージが「みなしご化」されていたら
-- つまりメンテナが Debian QA
Group
になっていたら、そのパッケージがまだ利用可能であれば、そのパッケージを引き取ることができるかもしれません
(Debian Bug report logs: Bugs in
package wnpp in unstable
で所有者の状況をチェックしてください)。関係しているメンテナが
"引き取り依頼" (RFA)
を出しているパッケージを引きとるのもアリです。
みなしご化された、あるいは RFA されたパッケージについて、いくつか違った見方ができるようになっています:
注釈ですが、Debian にはすでにほとんどの種類のプログラムが含まれていること、Debian アーカイブにすでに含まれているパッケージの数は、アップロード権限をもつユーザの数よりもはるかに多いこと、に注意しておくのは重要です。従って、すでにアーカイブに含まれているパッケージへの作業は、他の開発者からはるかに喜ばれます (し、よりスポンサーしてもらえる見込みがあります)。 [4]。作業のやり方はいろいろあります。
まだよく使われている、みなしごのパッケージを引き取る
パッケージ化チーム
に参加する
よく使われているパッケージのバグに対処する
QA
もしくは NMU アップロード
を準備する
もしパッケージを引き取ることができるなら、(apt-get source パッケージ名 などの方法で) ソースを入手して、調べてみてください。残念ながらこの文書では、パッケージを引き取ることについて、わかりやすく説明してはいません。ありがたいことに、既に誰かがあなたのためにパッケージを準備してくれたわけですから、そのパッケージがどのように動作するのか理解することは、それほど難しくはないでしょう。とはいえ、そうした場合でもこの文書に書かれた多くのアドバイスはそのまま通用しますから、このまま読み進めていってください。
もしあなたの選んだプログラムがまだパッケージ化されていないもので、それを Debian に入れたいと決めたなら、以下のチェック項目について確認してください。
まず、そのプログラムが機能することがわかっていて、その有用性についてある程度の期間確かめておかねばなりません。
作業中のパッケージ
を確認し、他に誰も同じパッケージを作っていないことを確かめてください。誰も作業していなければ、reportbug
を使って ITP (Intent To Package)
のバグレポートを、wnpp
疑似パッケージに送ってください。もし既に誰かが作業していたら、必要に応じて連絡をとってください。もしその必要が無ければ、まだ誰も手をつけていない他の面白いプログラムを探して再チャレンジです。
プログラムには、ライセンスが必須です。
main セクションは、Debian
フリーソフトウェアガイドライン (DFSG)
に完全に準拠しなければなりませんし (http://www.debian.org/social_contract#guidelines
参照)、また Debian ポリシーにより、コンパイル・実行時に
main
にあるもの以外のパッケージに依存してはなりません。これが望ましいケースです。
contrib セクションは、DFSG に完全に準拠していなければなりませんが、コンパイル・実行時に main にあるもの以外のパッケージに依存していても構いません。
non-free セクションは、DFSG に準拠していない部分があるかもしれませんが、配布可能でなければなりません。
どうするべきかよくわからなければ、debian-legal@lists.debian.org
にライセンス文を送り、アドバイスを求めてください。
実行時に root に setuid しないプログラムがよいでしょう。もっと言えば、どんなときも setuid や setgid を必要としないほうがよいでしょう。
デーモンとして動作するプログラムや、*/sbin
ディレクトリに配置するプログラム、また root
特権を使ってポートを開くプログラムでないほうがよいでしょう。
バイナリ実行形式が得られるプログラムを選びましょう。ライブラリを扱うのはずっと難しいのです。
ちゃんとした説明書きのあるプログラムで、ソースコードが理解可能なもの (つまり、わかりにくくないこと)。
プログラムの作者に連絡をとって、パッケージ化の承諾と Debian に友好的かどうかを確認しておきましょう。何かプログラムそのものに起因する問題が発生した際に、作者にいろいろ聞けるということは重要なので、由来のはっきりしないソフトウェアの断片をパッケージ化するのはやめておきましょう。
もちろんこれらのことは安全策というだけのことです。setuid
デーモンで何かミスしてしまい、怒り狂ったユーザから抗議殺到という事態を回避したいのです。パッケージ化についてもっと経験を積めば、こうしたパッケージも
作れるようになるでしょう。しかし、どんなに老練な開発者だって、何か分からないことがあれば
debian-mentors@lists.debian.org
メーリングリストで質問するのです。そこには喜んで手助けしてくれる人々がいます。
もっと詳しい話は、Debian
開発者リファレンス
に載っていますので、そちらを参照してください。
さて、最初にすべきことは、オリジナルのソースコードを探してダウンロードすることです。ここでは作者のホームページから、すでにソースファイルを入手したとして話を進めます。フリーな
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]
自分のホームディレクトリ以下に debian
や
deb
、または何か適当な名前のサブディレクトリを作りましょう
(今回の場合には ~/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" を実行すると、インストールされたファイルをすべて削除できることさえもあります。
多数の自由なプログラムが、C
と
C++
言語で書かれています。これらの多くは、異なるプラットフォーム間で移植を可能とするために
Autotools や CMake
を使っています。こういったツールは、Makefile
やその他必要なソースファイルを生成するのに使われます。その後、そういったプログラムは通常の
"make; make install" でビルドされます。
Autotools
は
Autoconf
、Automake
、Libtool
と gettext
から成る
GNU
のビルドシステムです。configure.ac
、Makefile.am
や Makefile.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.ac
や Makefile.am
ファイルを編集するには、autoconf
と
automake
についての知識が少々必要になります。"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
ファイルがあれば、そういうソースだとわかります。
パッケージ化の作業は完全にクリーンな (オリジナルのままの) ソースディレクトリ、簡単に言えば新しく展開したソースから始めるべきです。
パッケージをきちんと作るためには、プログラム名がすべて小文字になるよう、(まだそうなっていなければ)
オリジナルの名前から変更しておかなければいけません。またソースディレクトリ名を
パッケージ名-バージョン
に変更しておきましょう。
もしプログラムの名前が二語以上で構成されていたら、一つの語につなげるか省略形にしましょう。
例えば、"John's little editor for X"
というソフトウェアならば johnledx
とか
jle4x
というようにしましょう。あまり長すぎない程度、
せいぜい 20
文字くらいまでの長さで、適当に決めていただければ結構です。
プログラムの正確なバージョンもチェックしましょう
(パッケージのバージョンに含めるために)。もしそのソフトウェアが「バージョン
X.Y.Z」という形式で番号付けされておらず、ある種の日付で区別されている場合には、新しいバージョン番号が大きくなっているようなら、その日付をバージョン番号として自由に使ってください。開発元が使っているのと同じバージョン番号を使うのがベストではありますが、それが09Oct23
といった形式の場合は、それを 20091023 といった
YYYYMMDD 形式に変換して、dpkg
プログラムでのアップグレードが適切な順番でできるようにする必要があるかもしれません。[8]
およそバージョン番号に使えそうな情報がまったくないと言う場合、上流メンテナに連絡をとって彼らが何か他のリビジョン管理手段を使っているかどうか聞いてみましょう。
次のようにして、シェルの環境変数 $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 つの特徴に注意してください:
パッケージ名とバージョンは "_" (アンダースコア) で区切られています。
"tar.gz" の前に "orig." があります。
ソース中のdebian
ディレクトリにたくさんのテンプレートファイルが作成されていることにも注意が必要です。これらについては、debian/ディレクトリ以下に無くてはならないファイル,
第 4 章 と debian
ディレクトリにあるその他のファイル,
第 5 章
で説明します。パッケージ作成が自動的な過程ではないことも理解しておかねばなりません。ソースコードの変更, 第 3 章
のように、開発元のソースを Debian
向けに変更する必要があります。こういった作業の後で、パッケージの構築, 第 6 章
のように正しいやり方で Debian パッケージをビルドし、パッケージのエラーの検証, 第 7 章
のようにチェックし、そして パッケージをアップロードする, 第 8
章
のようにしてアップロードする必要があります。これらすべてのステップについてこれから説明します。
繰り返しますが、新規メンテナのあなたには、以下のような複雑なパッケージの作成はお勧めできません。
複数バイナリパッケージ
ライブラリパッケージ
カーネルモジュールパッケージ
カーネルパッチパッケージ
ソースファイルの形式が、tar.gz.
や
tar.bz2
でないもの
配布できない内容がソースの tarball にあるもの
実際には作業自体はそれほど大変ではないのですが、多少知識が余分に必要になります。そのため、ここではその作業について 一切説明しません。
作業中にテンプレートファイルを間違って消した場合は、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 UTCjoy-mg@debian.org
nabetaro@debian.or.jp
yyatsuo@gmail.com
uwabami@gfd-dennou.org
lurdan@gmail.com
osamu@debian.org