プログラムのメインディレクトリに移動して 以下のコマンドを実行してください:
dpkg-buildpackage -rfakeroot
途中で PGP の秘密鍵を 2 回入力する必要がありますが、 それを除けばこのプログラムにすべてお任せで大丈夫です。 一連の作業が終わった後、上記のディレクトリ (~/debian/) には 新しいファイルが 4 つ作成されているはずです。
これは作成されたバイナリパッケージです。他のすべてのパッケージと 同じく、dpkg や dselect を使ってインストールしたり削除したりできます。
元のソースコードをまとめてアーカイブにしたもので、 誰か他の人がソースからパッケージを再構築したいという場合に 使ってもらうことができます。 また、現在 Debian パッケージ管理システムを使っていないが、 そのプログラムのソースを自分の手でダウンロードし、 コンパイルしたいという場合にも役に立ちます。
これはソースコードの内容の概要です。このファイルは gentoo-0.9.12/debian/control
ファイルから生成され、ソースを dpkg-source(1)
によって展開する時に
使われます。 このファイルは PGP で署名されているので、本当にあなた自身が
作成したものかどうかを利用者が検証できます。
この圧縮されたファイルにはあなたがオリジナルのソースコードに
行なったすべての変更や追加などの情報が「unified diff」の形式で
含まれています。これは dpkg-source(1)
によって生成され、また利用されます。
このファイルは現在のレビジョンのパッケージにおける変更点を すべて記載したもので、Debian FTP アーカイブ管理プログラムに よってバイナリおよびソースパッケージを FTP アーカイブに インストールするために利用されます。 これは gentoo-0.9.12/debian/changelog ファイルと .dsc ファイル とを元にして生成されます。
パッケージの保守管理を続けていくと、プログラムの動作が
変更されたり新機能が追加されたりすることがあります。
あなたのパッケージをダウンロードする人は、このファイルを見れば
何が変わったのか一目で分かります。 長い数字の羅列は各ファイルの MD5
チェックサムで、パッケージを ダウンロードした人は md5sum(1)
を使って 整合性をテストすることができます。もし数字が一致しない場合には、
ファイルが壊れているか、あるいは何者かによって改ざんされている
と分かるわけです。 このファイルは PGP で署名されているので、
パッケージの利用者はこのファイルが本当にあなた自身が作成した
ものかどうかをちゃんと判断できます。
大規模なパッケージの場合には、debian/rules をちょっといじるたびに 毎回最初からパッケージの再構築をやりなおしたくはないでしょう。 テスト目的の場合、以下のようにすれば上流 (upstream) ソースの再構築を しないで .deb ファイルを生成できます。
fakeroot debian/rules binary
`dh_clean -k` が確実に毎回実行されるように、「install」ルールが 「install-stamp」という子供 (これは最近のデフォルトです) を *持たない* ことだけは確認してください。それから、最終的にきちんとテストが 完了したら、ちゃんと upload できるようにするため、正しい手順に 従ってパッケージを再構築することを忘れないようにしてください。
lintian(1)
をあなたの .changes ファイルに
かけてみましょう。このプログラムはパッケージ化におけるよくある間違いを
チェックしてくれます。実行するコマンドは:
lintian -i gentoo_0.9.12-1_i386.changes
もちろん、ファイル名はあなたのパッケージのために生成された changes ファイルの名前に置き換えてください。 もしエラー (E: で始まる行) が表示されたなら、説明 (N: の行) を 読んで誤りを訂正し、パッケージの構築, Section 6.1 に記述されているように 再構築してください。 W: で始まる行は単なる警告ですので、もし大丈夫だという確信があれば 無視してしまっても結構です (しかし多くの場合には、 修正すべき点が何かしら存在しているようです)。
dpkg-buildpackage によるパッケージの生成と、lintian の実行を
すべてひとつのコマンド debuild(1)
で
行なってしまうこともできます。
mc(1)
などのファイルマネージャを
使ってパッケージの中を見たり、dpkg-deb(1)
を使ってパッケージの中身を一時的な場所へ取り出したりしてみましょう。
なにかがうまく行かなくて、妙なものが削除されないままに残されて
しまった場合に備えて、バイナリおよびソースパッケージの両方について
不要なファイルが余分に含まれたりしていないかどうか、 しっかり検査してください。
ヒント: `zgrep ^+++ ../gentoo_0.9.12-1.diff.gz` を実行すると、
ソースファイルに対してあなたが行なった変更や追加のリストを 得ることができ、また
`dpkg-deb -c gentoo_0.9.12-1_i386.deb` を
実行するとパッケージ中のファイルのリストを得ることができます。
自分でパッケージをインストールして試してみましょう。
例えば、debi(1)
コマンドを root で 実行してみましょう。
自分の環境以外のマシンでも試してみて、インストール時や実行時に
警告やエラーが発生しないか注意深く観察してみてください。
また、後日プログラムの新版を元にしたバージョンを構築する際には、 パッケージが基本的にアップグレード可能であることを検証するために、 以下を実行してください。
徹底的に新パッケージをテストしたら、次にこれらのファイルを
dupload(1)
を使って master.debian.org に
アップロードする必要があります。 まず dupload の設定ファイル ~/.dupload.conf
を編集しましょう 以下はこのファイルの例です。
package config; $default_host = "master"; $cfg{"master"}{"method"} = "scpb"; $cfg{"master"}{"login"} = "joy"; $cfg{"master"}{"visibleuser"} = "jrodin"; $cfg{"master"}{"visiblename"} = "jagor.srce.hr"; $cfg{"master"}{"fullname"} = "Josip Rodin"; $cfg{"non-us"}{"method"} = "scpb"; $cfg{"non-us"}{"login"} = "joy"; $cfg{"non-us"}{"visibleuser"} = "jrodin"; $cfg{"non-us"}{"visiblename"} = "jagor.srce.hr"; $cfg{"non-us"}{"fullname"} = "Josip Rodin"; 1;
もちろん、私の個人的な設定の部分はあなたの設定に従って
変更してください。またそれぞれのオプションが持つ意味を理解する ために
dupload.conf(5)
マニュアルページ を読んでください。
インターネットプロバイダに接続し、以下のコマンドを 実行してください:
dupload --to master gentoo_0.9.12-1_i386.changes
dupload は各ファイルの md5 チェックサムを計算し、 .changes ファイルの中の情報と照合します。もし一致しない時は 正しく upload できるように パッケージの構築, Section 6.1 の説明に従って 再構築するよう、警告してきます。
dupload は master.debian.org 上でのあなたのパスワードを 質問し、パッケージを
upload し、今回のあなたの upload に ついての短いアナウンスを必要に応じて
debian-devel-changes@lists.debian.org
に流します。
もしあなたがヨーロッパに住んでいるなら、master の代わりに 他のいくつかの upload
queue を利用することが可能です。 詳細については dupload(1)
、
dupload.conf(5)
、 および開発者レファレンスを参照してください。
例えば仮に、#54321 という番号のバグレポートがあなたのパッケージ に対してファイルされ、解決するべき問題が記述されていたとしましょう。 パッケージの新しい Debian レビジョンを作成するには、以下を実行する 必要があります。
さて、ではまた別の、もうすこし複雑な状況を考えてみましょう - 新しい上流のバージョン (new upstream version) がリリースされ、 もちろんあなたはそれをパッケージ化したい、という状況です。 この場合、以下を実行する必要があります。
uupdate -u gentoo-0.9.13.tar.gz
もちろん、このファイル名はあなたのプログラムのソースアーカイブ名で
置き換えてください。uupdate(1)
は tarball
の名前を適切に変更し、以前の .diff.gz ファイルにある変更をすべて 適用して新しい
debian/changelog ファイルの内容を更新します。
もし 「debian/watch」ファイルを watch.ex,
Section 5.6 で 説明したように設定していれば、 uscan(1)
を実行して、改訂されたソースを探して、ダウンロードし、 uupdate
を実行、という手順を自動的に行なわせることができます。
公共の場で質問する前に、まずはマニュアルを読みましょう。
ここでいうマニュアルには、例えば /usr/share/doc/dpkg、
/usr/share/doc/debian、/usr/share/doc/package/* といった
ディレクトリに含まれる文書や、この文書で言及されたプログラムに 関する man/info
ページなどが含まれます。 もしあなたがバグレポート
(そう、ホンモノのバグレポートです!) を受け取ったら、それはあなたが Debian バグ追跡システム
をじっくり調べて、そこにある文書を読み、バグレポートに効率よく
対処する方法を知る時が来たということです。
Debian Mentors メーリングリスト debian-mentors@lists.debian.org
に参加すれば、あなたの質問に答えてくれる経験豊富な Debian 開発者に
相談することができます。このリストに参加するには、 サブジェクト (件名)
に「subscribe」という単語を書いたメールを debian-mentors-request@lists.debian.org
宛に送ってください。
それでもまだ質問があるのなら、Debian Developers メーリングリスト debian-devel@lists.debian.org
で尋ねてみるとよいでしょう。 このリストに参加するには、 サブジェクト (件名)
に「subscribe」という単語を書いたメールを debian-devel-request@lists.debian.org
宛に送ってください。 もしあなたが Debian
開発者だったら、どっちにしてもこのリストに 参加するべきです。
((訳注: 日本では、Debian JP Project が主催する Debian JP 開発者
メーリングリスト debian-devel@debian.or.jp
に参加して質問して
みても良いでしょう。 このリストに加入するにはメール本文に 「subscribe
あなたのお名前 (ローマ字で)」を書いて debian-devel-ctl@debian.or.jp
に送り、あとは管理サーバの 指示にしたがってください。 Debian JP Project
では他にもいくつかのメーリングリストを用意しています。 詳しくは メーリングリスト
を参照してください。))
万事うまく行ったとしても、神様にお祈りを忘れずに。 なんでかって?考えても見てください、ほんの数時間の内に (あるいは 数日かかるかも知れませんが) 世界中のユーザがあなたのパッケージを 使うようになるのです。 そしてもしあなたがとんでもないヘマをしでかしていたら、きっと数知れぬ 怒れる Debian ユーザからメール爆撃を食らうはめになるでしょう… まあ冗談ですけど :-)
楽に構えて、バグ報告に対応する準備をしましょう。 それに、Debian ポリシーに完全に沿うようにするまでには まだまだやるべきことがいっぱい残っています。 (もう一度言いますが、ちゃんとした文書 を読んで勉強しましょう)。 好運を祈ります!
jrodin@jagor.srce.hr
mhatta@debian.or.jp