[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:01946] Making a debian Package [trans]



橋本@聖和大です。

息抜きにしようとMaking a Debian Packageを訳し始めたら終わっち
ゃったので、ポストします。完全な逐語訳ではなく、正確さを犠牲に
しない範囲で読みやすさを優先しています。必要と思ったところは、
多少の付け加えもしています。こういう訳し方は許容されますよね?

で、とりあえずチェックをお願いします。9月末くらいに公開という
ことにしましょう。その際はHMTL化します。

オリジナルは
http://fatman.mathematik.tu-muenchen.de/~schwarz/debian-doc/
manuals/make_package.html
です。
-----------------
「イントロダクション: Debianパッケージを作る」

Debianがここまで最高峰のLinux配布パッケージになった理由の一つはそのパ
ッケージシステムにあります。すでにDebian用の形式(.deb)にパッケージ化さ
れたソフトウェアはきわめてたくさんありますが、それでもなお、あなたがイ
ンストールしたいソフトウェアがまだDebian用にパッケージ化されていないこ
ともあるでしょう。どうやったらできるんだろうか、きっととても難しいに違
いない、そんな風に思っていませんか。私も実はDebian用のパッケージを作成
し始めたばかりですけど、うれしい驚きだったのは、それが本当に簡単だった、
ということなのです。もちろんUNIX流のプログラミングを多少知っている必要
はありますが、ウィザード級である必要などないのです。

まず、始める前に、次のパッケージをインストールし、環境設定をしましょう。

次のパッケージはdevelセクションにあります。
・binutils
 このパッケージに含まれるプログラムはプログラムの部品となるオブジェク
トファイルをアセンブルしリンクするのに使われます。
・gcc
 これはGNUのCコンパイラです。たいていのLinuxプログラムはCで書かれてい
ます。
・cpp
 これはCのプリプロセッサです。
・libc5-dev
 これはオブジェクトファイルを作成するのにgccがリンク時に必要とするCの
ライブラリとヘッダファイルです。
・make
 通常プログラムを作成するにはいくつもの工程を踏みます。同じコマンドを
何度も何度も入力するような手間をかけるのではなく、そのプロセスを自動化
するmakeプログラムを使いましょう。
・dpkg-dev
 このパッケージにはDebianアーカイブを作成するのに必要なツールが入って
います。また、Debianプログラマー・マニュアルとDebianポリシー・マニュア
ルも同梱されています。
・debmake
 これはDebianパッケージを作成するツールの上位版です。これを使えば、作
業がとても楽になります。
!!! a higher level set of toolsって本当に「上位版」でいいですか?

次のパッケージはadminセクションに入っています。
・sudo
 sudoがあれば、ユーザは一時的にrootになれます。(もちろんシステム管理
者の管理下ではありますけどね) パッケージをビルドする過程でrootアクセ
スが必要になることがあるのです。もしroot権限を持っているならこのパッケ
ージは不要です。ですが、セキュリティを考えれば、rootでログインするのは
本当に必要なときだけに限るべきですから、root権限を持っていても、このパ
ッケージは有用です。
・cpio
 これはtarやzipのようなアーカーバです。dpkg-devで必要になります。

次のパッケージはmiscセクションに入っています。
・file
 この小さなプログラムはファイルがどのようなタイプであるかを知ることが
できます。depkg-devを使うのに必要になります。
・patch
 patchはdiffによって作成された差異リストを扱い、それをオリジナルのソ
ースに適用することで、「パッチを当てた」バージョンを作ります。

 この他に、自分のパッケージに電子的に「署名」するためにpgpという暗号
化パッケージが必要です。特に、自分の作ったパッケージを他の人に配布した
ければ必ず必要です。ただ、アメリカ合衆国の変な法律のため、手近なDebian
のftpサイトからpgpパッケージをダウンロードするわけにはいきません。ftp
サイトには代わりにREADME.non-usというファイルがルートに置かれています。
これを見れば、あなたの住んでいる国ではpgpパッケージをどこから得たらよ
いのかが分かります。

ここまでに書いたのは単に各パッケージが何であるかの紹介です。これ以降の
作業を続ける前に各プログラムのドキュメントをしっかり読んでください。こ
れはしんどい作業に思えるかもしれませんが、後からきっと「読んでおいてよ
かった」と思うはずです。

さて、必要なパッケージもインストールしましたし、ドキュメントも読みまし
た。となれば、後は始めるだけですね。例としてempireというプログラムをDe
bian用のパッケージにしてみましょう。empireというのは自分の帝国を作る戦
略ゲームです。

まず最初にすべきことは、オリジナルパッケージを見つけてダウンロードして
くれうことですね。Linuxのミラーサイトとしてはsunsiteが最大なので、私は
sunsiteの近くのミラーサイトを探してみました。で、ここで見つけたわけで
す。

作成できるのは2種類のパッケージです。ソースパッケージとバイナリパッケ
ージです。ソース・パッケージには実行形式にコンパイルするためのソースコ
ードが入っています。バイナリ・パッケージにはコンパイル済みのプログラム
が入っています。もし正式なDebianディストリビューションに自分の作ったパ
ッケージを提供したいなら、必ずソースコードを含める必要があります。詳し
くはDebianポリシー・マニュアルを見てください。empireにはソースコードが
付属しているので、ソースパッケージを作ることにしましょう。

deb-makeはソースが「<パッケージ名称>-<バージョン番号>」というディレク
トリに収められていると想定しています。ですから、empire-1.1というディレ
クトリを作って、そこにempireの.tgzファイルを解凍しましょう。(バージョ
ン番号はsunsiteにアップロードされるプログラムに必ず添付されるlsmファイ
ルから割り出しました)

$ mkdir empire-1.1
$ mv empire.tar.gz empire-1.1
$ cd empire-1.1
$ tar -xvzf empire.tar.gz
ここまでがうまく行けば、
$ rm empire.tar.gz
としましょう。

deb-makeを動かすといくつかの情報が表示されます。このうち一番重要なのは、
あなたの電子メールアドレスです。これはパッケージに含まれ、問題があった
ときにあなたに連絡が取れるようにするためのものです。もし今使ってるのと
は異なる電子メールアドレスを指定したいなら、deb-makeを起動する前に、EM
AIL環境変数を希望のものに変更してください。次に、どのような種類のパッ
ケージを生成したいかが聞かれます。
・Single
 単一の.debファイルを作成したい場合はこれを選びます。
・Multiple
 一群のソースコードから複数の.debファイルを作成したい場合はこれを選び
ます。これを選ぶのは、作ろうとしているパッケージがとても大きなもので、
ユーザが選択的にインストールできるようにするために、パッケージをいくつ
かに分割したいといった場合です。
・Library
 これを選ぶと.debファイルが少なくとも2つ作成されます。一つは、/usr/l
ibに置かれるライブラリで、もうひとつは「<ライブラリ名称>-dev_<ライブラ
リバージョン番号>.deb」ファイルで、ドキュメントやヘッダなどがまとめら
れます。
では、de-makeを起動しましょう。empireについてはsingleを選びます。
$ deb-make
deb-makeが終了すると、debianという名のサブディレクトリが作成されている
はずです。見てみましょう。
$ cd debian
このディレクトリにはたくさんのファイルが置かれています。それぞれがどう
いうものか簡単に説明しておきましょう。詳細は『Debianプログラマーマニュ
アル』を見てください。
・control
 このパッケージを管理するのにdpkgとdselectが利用するさまざまな値が書
かれています。
・rules
 dpkg-devが実際にこのパッケージを作成するときのmakeファイルです。
・README.debian
 オリジナルのパッケージとあなたがDebian化したパッケージとの間の違いや
付加的な情報があれば、ここに記述してください。
・changelog
 あるパッケージを維持していくうちに、変更が加えられ、新たな機能が付け
加えられるものです。あなたのパッケージをダウンロードする人は、このファ
イルを見て、何が変更されたかを知ることができます。changelogに変更記述
を追加するのを自動化したければ、dchのmanページを見てください。
・*.ex
 パッケージによっては単にファイルをインストールするだけでなく、何らか
の作業が必要になることがあります。たとえば、サーバ・プログラムは/etc/i
netd.confファイルに起動用のスクリプトを追加する必要があるかもしれませ
ん。*.exというファイル名のファイルはこの種の情報をどう追加すればよいか
を示すサンプルに当たります。empireには必要ないものですので、これはその
まま削除してしまいましょう。
$ rm *.ex

では、controlファイルを編集しましょう(もしpicoを使っていないなら、自分
の使っているエディタに置き換えて考えてください)。
$ pico control
編集すべきものとしては、このパッケージが該当するセクション(この場合はg
amesですね)を指定することと、いくらか記述を付け加えることくらいです。
これが終われば、buildプログラムを起動します。
$ cd ..
$ sudo build
この段階では、何度か試行錯誤が必要になるでしょう。特に、他のUNIXや他の
Linuxディストリビューション用に作られたプログラムであれば、Debian用に
記述を変更する必要が出てきます。たとえば、empireのMakefileにはdcurses
のライブラリをリンクせよという記述があります。しかし、Debianはncurses
を使うので、この行は書き換える必要があります。また、empireの作者が使用
したインストールコマンドのバージョンはDebianのものとは異なるため、この
違いも修正しないといけません。最後に、install sectionの部分で、インス
トール先のディレクトリを/usr/local/gamesから/usr/local/binに変更してく
ださい。残念ながら、こうしたちょっとした変更は必ず付きまとうものですが、
通常はたいした作業にはならないものです。

buildが終了したら、上位ディレクトリに移ります。
$ cd ..
すると新しいファイルが4つできています。
・empire_1.1-1_i386.deb
 これが完成したdebianパッケージです。これで他のパッケージと同様、dpkg
やdselectでインストールしたり、削除したりすることができるようになりま
す。
・empire_1.1-1_i386.changes
 あるパッケージを維持していくうちに、変更が加えられ、新たな機能が付け
加えられるものです。あなたのパッケージをダウンロードする人は、このファ
イルを見て、何が変更されたかを知ることができます。このファイルは<パッ
ケージ>/debian/changelogファイルに従って作成されます。changelogに変更
記述を追加するのを自動化したければ、dchのmanページを見てください。また、
このファイルにはパッケージに含まれるファイルのリストも入っています。そ
のあとの、数字の何行にも渡る羅列は、こnファイルのMD5形式の要約です。
あなたのファイルをダウンロードした人は、md5sumプログラムを使って、ファ
イルをチェックし、もし数字が一致しなければ、ファイルが壊れているか、ハ
ックされたかのいずれかだ、というのが分かるわけです。
・empire_1.1-1.tar.gz
 これはもともとのソースコードです。これがあれば、誰かがあなたのパッケ
ージを一から作り直したくなっても、ちゃんとできるわけです。
・empire_1.1-1.dsc
 ソースコードの内容の要約です。このファイルは<パッケージ>/debian/cont
rolファイルに従って作成されます。


 さぁ、これで終わりです。いまやあなたも新しいDebianアーカイブの誇り高
き作成者の一員となったのです。Debianポリシーに完全に適合するようにする
にはまだまだすべきことが残ってはいます(詳しくはDebianポリシーマニュア
ルを見てください)。が、それでも、この入門記事を読んでいただけたのです
から、Debianアーカイブを作成するのが思ったほど難しい作業ではないことが
分かってもらえたのではないでしょうか。


もっと情報が欲しければ
Linux/UNIXでのプログラミングの入門書には次のようなものがあります。
・Beginning Linux Programming
  Matthew & Stones, Wrox Press, 1996. ISBN: 1874416680
・Programming With GNU Software
  Loukides & Oram, O'Reilly & Associates, 1996. ISBN: 1-56592-112-7
・The Unix Programming Environment
  Kernighan & Pike, Prentice-Hall Inc., 1984. ISBN: 0-13-937681-x
 (邦訳『UNIXプログラミング環境』石田晴久監訳, アスキー)
訳注(特に薦めるわけではありませんが、以下のような書籍もあります)
・Linux Programming
  Volkerding, Foster-Johnson, & Reichard, The MIS Press, 1997
  ISBN: 1-55828-507-5
・『UNIXスーパーテキスト』
 アスキー?
Debianについてのヘルプ
・/usr/doc/dpkg, /usr/doc/debian, /usr/doc/debmake(とりわけREADME.debi
an.gz)の各ディレクトリの文書とこの文書で触れたプログラムのmanページを
最初にきちんと読みましょう。
・それでも質問があれば、Debian Developers メーリングリスト(debian-deve
l@lists.debian.org)に問い合わせてください。

-------
原著者: Jaldhar Vyas, 1997年2月18日
訳者: 橋本喜代太, 1997年9月25日 <hash@xxxxxxxxxxxx>