/[ddp]/manuals/trunk/maint-guide/maint-guide.ja.sgml
ViewVC logotype

Contents of /manuals/trunk/maint-guide/maint-guide.ja.sgml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2668 - (show annotations) (download) (as text)
Sun Dec 26 03:22:55 2004 UTC (8 years, 4 months ago) by osamu
File MIME type: text/x-sgml
File size: 91085 byte(s)
Fix debian/control
1 <!DOCTYPE debiandoc PUBLIC "-//DebianDoc//DTD DebianDoc//EN" [
2
3 <!-- textual data entities -->
4 <!-- first definition wins in SGML -->
5 <!ENTITY % default SYSTEM "default.ent"> %default;
6
7 ]>
8 <!-- CVS revision of this document "$Revision: 1.31 $" -->
9 <!-- CVS revision of original english document "*.**" -->
10
11
12 <debiandoc>
13
14 <book>
15
16 <titlepag>
17
18 <title>Debian メンテナ入門</title>
19
20 <author>Josip Rodin <email/joy-mg@debian.org/
21 </author>
22
23 <author> 翻訳: 八田真行 <email/mhatta@debian.or.jp/
24 </author>
25
26 <author> 日本語訳更新 (v1.2): 佐野武俊 <email/sano@debian.org/
27 </author>
28
29 <version>version 1.2, 6 April 2002.</version>
30
31 <copyright>
32 <copyrightsummary>Copyright &copy; 1998-2002 Josip Rodin.</copyrightsummary>
33
34 <p>この文書は GNU 一般公有使用許諾書、バージョン 2 かそれ以降が
35 規定する条件の下で利用できます。
36
37 <p>この文書は以下の二つの文書を参考として書かれました。
38
39 <p>Debian パッケージの作り方 (Debmake マニュアル)、
40 Copyright &copy; 1997 Jaldhar Vyas.
41
42 <p>新米メンテナのための Debian パッケージング Howto、
43 Copyright &copy; 1997 Will Lowe.
44 </copyright>
45
46 </titlepag>
47
48 <toc sect>
49
50 <chapt id="start">まずは「正しいやり方で」始めよう
51
52 <p>この文書では、Debian パッケージを作るにはどうしたらよいか、
53 一般的な Debian ユーザと開発者予備軍を対象に解説しようと思います。
54 小難しい専門用語はできるだけ避けて、実用的な例を多く用いて説明していく
55 つもりです。ことわざにもあるように、<em>百聞は一見にしかず</em>
56 ですからね!
57
58 <p>Debian が Linux ディストリビューションの最高峰と呼ばれる
59 までになった理由のひとつがそのパッケージ管理システムです。
60 すでに膨大な数のソフトウェアが Debian パッケージとして配布されて
61 いますが、まだパッケージ化されていないソフトウェアをインストール
62 しなければならないこともあるでしょう。
63 あるいは、どうやったら自分でパッケージが作れるんだろう、とか
64 それはとても難しいことなんじゃないか、などと考えたことがあるかも
65 しれません。まあ、もしあなたが本当に駆け出しの Linux ユーザ
66 ならば困難な仕事でしょうが、でもそうだったら今ごろこんな文書
67 読んでませんて :-)
68
69 パッケージを作成するには Unix のプログラミングについてある程度
70 知っている必要がありますが、神様みたいに精通している必要は
71 全くありません。
72
73 <p>ただ、確かなことがひとつあります。Debian パッケージを
74 きちんと作成し、保守していくには、手間を惜しんではならない、
75 ということです。間違えないでください。Debian のシステムを
76 うまく動かしていくためには、メンテナーは技術的に有能である
77 だけでなく、勤勉であることも必要なのです。
78
79 <p>この文書では (最初は関係無さそうに思えることまで) どんな
80 細かい手順も余さず説明します。
81 ともかく一つ作ってしまえば、あとは次のリリース、そして
82 他のパッケージへと経験を積んでいけばよいのです。
83
84 <p>この文書の最新版は常に以下の場所からネットワーク経由で入手できます。
85 <url name="http://www.debian.org/doc/maint-guide/" id="http://www.debian.org/doc/maint-guide/">
86 また、 「<package/maint-guide/」パッケージにも含まれています。
87 日本語訳は「<package/maint-guide-ja/」パッケージの中にあります。
88
89 <sect id="needprogs">開発に必要なプログラム
90
91 <p>何かを始める前に、開発作業を行なうために必要な、
92 以下に挙げるようなパッケージがきちんとインストールされていることを
93 まず確かめておかなければいけません。
94 以下のリストには「essential」または「required」なパッケージが
95 含まれていないことに注意してください。
96 - これらのパッケージは既にインストールされていることを前提と
97 しています。
98
99 <p>この文書の現在のバージョンは Debian 2.2 (`potato') および
100 3.0 (`woody') に含まれるパッケージを対象に更新されています。
101
102 <p>以下のパッケージは Debian の「標準」(standard) インストール
103 構成に含まれており、すでに (それらが依存する他のパッケージと
104 いっしょに) システムに含まれているはずです。
105 しかし、念のために「dpkg -s &lt;パッケージ名&gt;」で確認して
106 おきましょう。
107
108 <list>
109 <item><package/dpkg-dev/ - このパッケージには Debian ソース
110 パッケージを展開、構築、アップロードするために必要なツール群が
111 含まれています。
112 (詳しくは <manref name="dpkg-source" section="1"> を参照)。
113
114 <item><package/file/ - この便利なプログラムを使うと
115 そのファイルがどういう形式のものか判定することが
116 できます
117 (詳しくは <manref name="file" section="1"> を参照)。
118
119 <item><package/gcc/ - GNU C コンパイラ。あなたのプログラムが
120 他の多くのプログラムと同様に C 言語で書かれている場合、必要と
121 なります。(詳しくは <manref name="gcc" section="1"> を参照)
122 このパッケージは、たとえばプログラムの「素」となるオブジェクト
123 ファイルをアセンブル、リンクするための <package/binutils/
124 (<package/binutils-doc/ パッケージをインストールして
125 「info binutils」すれば詳細な説明を読めます)、
126 C プリプロセッサ <package/cpp/
127 (詳しくは <manref name="cpp" section="1"> を参照)
128 など他のパッケージをいくつか一緒に「引き連れて」きます。
129
130 <item><package/g++/ - GNU C++ コンパイラ。あなたの
131 プログラムが C++ 言語で書かれている場合に必要です。
132 (詳しくは <manref name="g++" section="1"> を参照)
133
134 <item><package/libc6-dev/ - gcc がオブジェクトファイルを
135 生成してリンクするために必要な C ライブラリとヘッダファイル
136 が含まれています。(<package/glibc-doc/ パッケージを
137 インストールして「info libc」すればマニュアルが読めます)
138
139 <item><package/make/ - ふつう、プログラムはいくつかの手順を踏んで
140 生成されます。同じコマンドを何度も何度も繰り返し入力する代わりに、
141 make プログラムを使えば「Makefile」を書くことで手続きを自動化
142 することができます。(詳しくは「info make」)
143
144 <item><package/patch/ - このとても有用なユーティリティは
145 オリジナルとの差異が列挙されたファイル (diff プログラムによって生成) を
146 読み込んでオリジナルのファイルに適用し、変更された (パッチの当たった)
147 バージョンを作成します。
148 (詳しくは <manref name="patch" section="1"> を参照)。
149
150 <item><package/perl/ - Perl は今日の Un*x システムにおいてもっとも
151 使われているインタープリタ型スクリプト言語のひとつで、その強力さは
152 しばしば「Unix のスイス軍用チェーンソー」と形容されるほどです
153 (詳しくは <manref name="perl" section="1">を参照)。
154 </list>
155
156 <p>たぶん、以下のパッケージもインストールしたくなるでしょう。
157
158 <list>
159 <item><package/autoconf/ と <package/automake/ -
160 多くの新しいプログラムがこれらのプログラムを使って
161 前処理される設定スクリプトや Makefile を利用しています。
162 (詳しくは「info autoconf」および「info automake」)
163
164 <item><package/dh-make/ と <package/debhelper/ -
165 dh-make はあとで説明するパッケージのひな型を用意するのに
166 必要となります。またこのひな型ではパッケージを生成する
167 ために debhelper ツールをいくつか使います。
168 これらを使わなくてもパッケージ作成は可能ですが、
169 初めてパッケージを作る方には利用を
170 <strong>強く</strong> お勧めします。
171 パッケージを作るのも、以後パッケージを管理するのも
172 ずっと簡単になるからです。
173 (詳しくは <manref name="dh_make" section="1">、
174 <manref name="debhelper" section="1">、
175 /usr/share/doc/debhelper/README を参照)
176
177 <item><package/devscripts/ - このパッケージは
178 メンテナにとって便利であると思われるいくつかの
179 有用で優れたスクリプトを含んでいますが、だから
180 といってパッケージを作成するために必須という
181 わけではありません。
182 (詳しくは /usr/share/doc/devscripts/README.gz 参照)。
183
184 <item><package/fakeroot/ - このユーティリティを使うと、
185 パッケージを作成する際に何度か必要となる root 権限を
186 エミュレートすることができます。
187 (詳しくは <manref name="fakeroot" section="1"> を参照)
188
189 <item><package/gnupg/ - このツールを使うと、自分の
190 パッケージに「デジタル <em>署名</em>」を付けることが
191 できます。もしあなたが自分の作成したパッケージを他の
192 人々に配布したいのなら、これは特に重要です。
193 また、Debian ディストリビューションにあなたの作成した
194 パッケージが含まれるようになった時には、確実にこの
195 デジタル署名をすることになります。
196 (詳しくは <manref name="gpg" section="1"> を参照)
197
198 <item><package/g77/ - GNU Fortran 77 コンパイラ。あなたの
199 プログラムが Fortran 言語で書かれている場合に必要です。
200 (詳しくは <manref name="g77" section="1"> を参照)
201
202 <item><package/gpc/ - GNU Pascal コンパイラ。あなたの
203 プログラムが Pascal 言語で書かれている場合に必要です。
204 ここで注目に値するのは <package/fp-compiler/、
205 Free Pascal コンパイラで、こちらもまたこの作業に適して
206 います。
207 (詳しくは <manref name="gpc" section="1"> および
208 <manref name="ppc386" section="1"> を参照)
209
210 <item><package/xutils/ -
211 ある種のプログラム (通常 X11 のために開発されたもの) は、
212 これらのプログラムを利用して、マクロ関数の組み合わせから
213 Makefile 群を生成します。
214 (詳しくは <manref name="imake" section="1">、
215 <manref name="xmkmf" section="1"> を参照)
216
217 <item><package/lintian/ - これは Debian パッケージチェッカで、
218 あなたが構築したパッケージを調べて、その中にありがちなミスが
219 見つかったらそれを指摘し、その問題について説明してくれます
220 (詳しくは <manref name="lintian" section="1">、
221 /usr/share/doc/lintian/lintian.html/index.html を参照)。
222 </list>
223
224 <p>さて、以下はこの文書と合わせて読むべき<em>とても重要</em>な
225 文書です。
226
227 <list>
228 <item><package/debian-policy/ - Debian ポリシーマニュアル。
229 Debian アーカイブの構造と内容、OS の設計に関するいくつかの問題、
230 あるいは「ファイルシステム体系基準」(Filesystem Hierarchy Standard、
231 個々のファイルやディレクトリがどこにあるべきかを規定した文書)
232 についてなどいろいろ載っていますが、
233 さしあたって重要なことは、ディストリビューションに含まれるために
234 それぞれのパッケージが満たすべき必要条件の説明です
235 (詳しくは /usr/share/doc/debian-policy/policy.html/index.html を参照)。
236
237 <item><em>developers-reference</em> - 開発者リファレンス。
238 例えばアーカイブの構造、パッケージ名の変更方法、
239 パッケージの選び方、メンテナを降りるにはどうしたらよいか、
240 どうやって NMU をするか、バグとのつき合い方、
241 いつどこにアップロードすればよいかなどなど、特に技術的な事柄以外の
242 パッケージ化についてのありとあらゆる情報がここにあります。
243 (詳しくは /usr/share/doc/developers-reference/developers-reference.html/index.html を参照)
244 </list>
245
246 <p>上記の簡単な説明は、それぞれのパッケージが何をするのか紹介
247 するだけのものです。先に進む前にどうかそれぞれのプログラムに
248 付属の文書を徹底的に熟読し、標準的な使い方だけでも理解しておいて
249 ください。きついと思われるかも知れませんが、あとになればきっと
250 <em>読んでてよかったなあ</em>と思うことでしょう。
251
252 注意: <package/debmake/ は dh-make と似た働きをする
253 いくつかのプログラムを含むパッケージですが、現在では
254 このパッケージを <em>使うべきでない</em> とされているため、
255 この文書では <strong>説明しません</strong>。
256 <package/debmake/ について詳しく知りたい人は
257 <url name="Debmake マニュアル" id="http://www.debian.org/~jaldhar/">
258 を参照してください。
259
260 <sect id="otherinfo">その他知っておくべきこと
261
262 <p>これから作ろうとするのは 2 種類のパッケージで、それぞれ
263 ソースパッケージ、バイナリパッケージと呼ばれています。
264 ソースパッケージはコンパイルしてプログラムになるソースコードが
265 含まれます。バイナリパッケージにはでき上がったプログラムそのものです。
266 紛らわしい言葉ですが、「プログラムのソース」と
267 「プログラムのソースパッケージ」を混同しないようにしましょう!
268 もし用語についてもっと知りたければ他のマニュアル類を参照してください。
269
270 <p>Debian では、「メンテナ(maintainer)」と言う用語はパッケージを
271 作る人を示し、「上流作者(upstream author)」とはプログラムそれ自身を
272 作った人を指します。そして「上流メンテナ(upstream maintainer)」
273 というのは Debian の外部で現在プログラムそのものを管理している人の
274 ことです。
275 たいていの場合、作者と上流メンテナは同一人物ですが、メンテナすらも
276 同じという場合もあり得ます。
277 もしあなたが何かのプログラムを書いて、それを Debian に入れたいと
278 考えたならば、Debian プロジェクトに参加してメンテナになってください。
279
280 <p>もしディストリビューションの次のリリースにあなたのプログラムを
281 含めたい(そのプログラムが有用なら、ぜひ!)ならば、パッケージを
282 構築したあとに(あるいはしている最中でも構いませんが)
283 正式な Debian メンテナになる必要があります。その手続きは
284 開発者リファレンスで説明されていますので、そちらを参照してください。
285
286 <chapt id="first">はじめの一歩
287
288 <sect id="choose">パッケージ化するプログラムの選定
289
290 <p>パッケージにしたいプログラムについてはすでに各自お考えがあると
291 思います。まず最初にしなければならないことは、そのパッケージが
292 すでにディストリビューションに収録されていないかどうか確認することです。
293 もしあなたが「安定版」を使っているのなら、
294 たぶん
295 <url name="パッケージ検索ページ" id="http://www.debian.org/distrib/packages">
296 に行って調べるのが最上の策です。
297 ((訳注: <url name="Debian JP パッケージ" id="http://www.debian.or.jp/Packages.html">
298 もついでに見ておくといいかもしれません。))
299 もしあなたが<strong>現在の</strong>「開発版」ディストリビューションを使って
300 いるのなら、以下のコマンドを使って調べてみてください。
301
302 <example>
303 dpkg -s プログラム名
304 dpkg -l '*プログラム名*'
305 </example>
306
307 <p>もしパッケージが既に存在していたら、インストールしましょう! :-)
308 もしそのパッケージが「みなし子」にされていたら (もしメンテナの名前が
309 「Debian QA Group」になっていたら)、そのパッケージを引き取ることが
310 できるかもしれません。
311 <url name="みなしごにされたパッケージ"
312 id="http://www.debian.org/devel/wnpp/orphaned">
313 および
314 <url name="引き取り手を探しているパッケージ"
315 id="http://www.debian.org/devel/wnpp/rfa_bypackage">
316 を調べて、本当にそのパッケージが引き取ってくれるメンテナを
317 待っている状態なのかどうか、確認してください。
318
319 <p>もしパッケージを引き取ることができたら、
320 (<tt/apt-get source パッケージ名/ などの方法で)
321 ソースを入手して、調べてみてください。
322 残念ながらこの文書ではパッケージを引き取ることについて
323 わかりやすく説明してはいません。ありがたいことに、既に
324 誰かがあなたのためにパッケージを準備してくれたわけですから、
325 そのパッケージがどのように動作するのか理解することはそれほど
326 難しくはないでしょう。
327 とはいえ、そうした場合でもこの文書に書かれた多くのアドバイスは
328 そのまま通用しますから、このまま読み進んでいってください。
329
330 <p>もしあなたの選んだプログラムがまだパッケージ化されていない
331 もので、それを Debian に入れたいと決めたなら、以下のチェック
332 項目について確認してください。
333
334 <list>
335 <item><url name="作業中のパッケージ"
336 id="http://www.debian.org/devel/wnpp/being_packaged">
337 ((訳注:
338 <url id="http://www.debian.or.jp/devel/prospective-packages.html"
339 name="作業を必要としているパッケージ"> も見ておきましょう))、
340 を見て、誰か他の人が同じプログラムのパッケージを作っていないかどうか
341 確かめてください。もし誰か作っていたら、必要に応じて連絡をとって
342 ください。もしその必要が無ければ、まだ誰も手をつけていない
343 他の面白いプログラムを探して再チャレンジです。</item>
344
345 <item>プログラムはライセンスを<strong>与えられていなければなりません</strong>。
346 そのライセンスが
347 <url name="Debian フリーソフトウェアガイドライン、DFSG"
348 id="http://www.debian.org/social_contract#guidelines">
349 に示された基準を満たす「フリー」なものであれば言うことなしです。
350 ((訳注: 日本のミラーサイトは
351 <url name="Debian フリーソフトウェアガイドライン" id="http://www.jp.debian.org/social_contract#guidelines">
352 にあります))
353
354 もしガイドラインにそぐわない点があっても、ライセンスが
355 プログラムの配布を許可している場合には、Debian の「contrib」や
356 「non-free」のセクションに含めることができます。
357 もしどのセクションに入れるべきか迷ったら、
358 <email/debian-legal@list.debian.org/ で聞いてみてください。
359 </item>
360
361 <item>動作のために setuid root が必要なプログラムを
362 パッケージ作成の最初の練習問題として選ぶべきでは
363 <strong>ありません</strong>。
364
365 さらに言えば、すべての場面において setuid や setgid でさえも
366 必要とすべきではありません。</item>
367
368 <item>デーモンとして動作するプログラムや、システム管理者の
369 ための専用のコマンド (*/sbin ディレクトリに含まれるもの)、
370 また root 特権を使ってポートを開くプログラムは、すくなくとも
371 最初は避けておいたほうが賢明です。
372 </item>
373
374 <item>バイナリ実行形式として使えるプログラムを選びましょう。
375 ライブラリをパッケージ化するのはずっと難しいのです。
376 </item>
377
378 <item>ちゃんとした説明書きのあること。あるいは理解可能な
379 ソースコードであること (つまり、コードに書かれた処理の流れが
380 混乱していないこと)。</item>
381
382 <item>プログラムの作者に連絡をとってパッケージ化の承諾をもらいましょう。
383 何かプログラムそのものに起因する問題が発生した際に、作者にいろいろ聞けると
384 いうことは重要なので、由来のはっきりしないソフトウェアの断片をパッケージ化
385 するのはやめておきましょう。
386 </item>
387
388 <item>そして最後に、といってもこれが重要なのですが、
389 ちゃんと動くかどうか確かめましょう。そして何回か試してみましょう。
390 </item>
391 </list>
392
393 <p>もちろんこれらのことは安全策というだけのことです。筆者としては、
394 何も知らないままにパッケージ化しておまけにミスった
395 ある種の setuid デーモンのせいで
396 怒り狂ったユーザからあなたに向けて抗議殺到というような事態を
397 回避したいのです。
398 パッケージ化についてもっと経験を積めば、こうしたパッケージも
399 作れるようになるでしょう。しかし、どんなに老練な開発者だって
400 何か分からないことがあれば debian-mentors メーリングリストで
401 質問するのです。そこには喜んで手助けしてくれる人々がいます。
402
403 <p>もっと詳しい話は、開発者リファレンスに載っていますので
404 そちらを参照してください。
405
406 <sect id="getit">プログラムを手にいれて、試してみる
407
408 <p>さて、最初にすべきことは、オリジナルのソースを探してダウンロード
409 することです。ここでは作者のホームページからすでにソースファイルを入手した
410 として話を進めます。
411 フリーな Unix 用プログラムのソースはふつう tar/gzip 形式で提供されています。
412 拡張子は .tar.gz で、普通は「プログラム名-バージョン」という
413 サブディレクトリを含んでいます。そこにすべてのソースが入っているわけです。
414 もしあなたのプログラムのソースが他の種類のアーカイブで提供されていたら
415 (例えばファイル名が ".Z" とか ".zip" で終わっていたら)、
416 適切なツールで展開しましょう。どうやって展開したらよいのか
417 良く分からなかったら debian-mentors メーリングリストで聞いてみましょう
418 (ヒント: 「file アーカイブ名.拡張子」を実行してみるとよいかも)。
419
420 <p>さて本稿では、「gentoo」というプログラムを例にとって説明しようと
421 思います。これは X11 上で動く GTK+ を使用したファイルマネージャです。
422 ちなみにこのプログラムはすでにパッケージ化されており、また、
423 この文書が最初に書かれた時点から比べると大幅に改変が加えられていることに
424 注意してください。
425
426 <p> 自分のホームディレクトリ以下に 'debian'、'deb'、または何か適当だと
427 思われる名前のサブディレクトリを作りましょう (今回の場合には ~/gentoo/
428 としても良いでしょう)。
429 ダウンロードしたアーカイブをここにコピーし、
430 「tar xzf gentoo-0.9.12.tar.gz」を実行して展開してください。
431 この時 (一見「無関係」に思えるようなものも含めて) エラーは一切
432 発生しないということを確認しておいてください。
433 もしエラーが起きたら、それは他の人々のシステム上で展開する際にもおそらく
434 エラーが起きるということです。そしてそこで使われている展開用のツールは
435 こういった異常を無視するかも知れませんし、無視してくれないかもしれません。
436
437 <p>さて、「gentoo-0.9.12」という別のサブディレクトリができました。
438 展開したディレクトリに移って、提供されているドキュメントを
439 <strong>徹底的に</strong>読みましょう。
440 通常は README*、INSTALL*、*.lsm、*.html などといった名前の
441 ファイルがあり、
442 それらの文書の中に、どうやったら正しくコンパイルできるのか、
443 どうインストールすればよいのかといった情報が見つかるはずです。
444 (たぶん /usr/local/bin にインストールするものとして説明されています
445 が、
446 そうしてはいけません。これについては <ref id="destdir"> を
447 参照してください)。
448
449 <p>プログラムによって構築の手順は代わりますが、最近のプログラムだと
450 「configure」スクリプトが付属していることがあります。
451 このスクリプトはソースをあなたのシステムに合わせて設定し、
452 このままコンパイルできるかどうかをチェックします。
453 たいていのプログラムは「./configure」を実行してソースコードの
454 設定を行なった後、「make」を実行してコンパイルします。
455 「make check」でプログラムのソースツリーに含まれている
456 自己診断テストを実行できるものもあります。
457 目的のディレクトリへのインストールは一般に「make install」によって
458 実行されます。
459
460 <p>さあ、試しにプログラムをコンパイルし、実行してみましょう。
461 インストール中や実行中に他の何かを壊してしまうことが無いかどうか、
462 またちゃんと動作するかどうか、などを確認してください。
463
464 <p>それから、たいていの場合は「make clean」(「make distclean」を
465 使えるならそのほうが良いです) を実行すると、コンパイル用の
466 ディレクトリをきれいにしてくれます。さらに「make uninstall」を
467 実行するとインストールされたファイルをすべて削除できることさえも
468 あります。
469
470 <sect id="namever">パッケージ名とバージョン
471
472 <p>パッケージ化の作業は完全にクリーンな (オリジナルのままの)
473 ソースディレクトリ、簡単に言えば新しく展開したソースから
474 始めるべきです。
475
476 <p>パッケージをきちんと作るためには、(もしまだそうなっていなければ)
477 プログラム名がすべて小文字になるよう、オリジナルの名前から
478 変更しておかなければいけません。
479 またソースディレクトリ名を &lt;パッケージ名&gt;-&lt;バージョン&gt; に
480 変更しておきましょう。
481
482 <p>もしプログラムの名前が一語以上で構成されていたら、
483 一つの語につなげるか省略形にしましょう。
484 例えば、「John's little editor for X」というソフトウェアならば
485 johnledx とか jle4x というようにしましょう。あまり長すぎない程度、
486 せいぜい 20 文字くらいまでの長さで、適当に決めて下されば結構です。
487
488 <p>プログラムの正確なバージョンもチェックしましょう
489 (パッケージのバージョンに含めるために)。
490 もしそのソフトウェアが「バージョン X.Y.Z」という形式で番号付けされて
491 おらず、ある種の日付で区別されている場合には、バージョン番号として
492 "0.0." にその日付を続けたものを使ってもいいでしょう
493 (先頭に "0.0." を付けておくのは、上流の開発者たちがある日
494 1.0 のような素敵なバージョンをリリースすると決めた場合に備えての
495 ことです。) つまり、もしリリースの、あるいはスナップショットの
496 日付が 1998 年の 12 月 19 日だったら、0.0.19981219 としておけば
497 結構です。
498
499 <p>およそバージョン番号に使えそうな情報がまったくないと言う場合、
500 上流メンテナに連絡をとって彼らが何か他のリビジョン管理手段を
501 使っているかどうか聞いてみましょう。
502
503 <sect id="dh_make">最初の「Debian 化」
504
505 <p>現在の作業ディレクトリがプログラムのソースディレクトリである
506 ことを確認し、以下を実行してください。
507
508 <p><example>
509 dh_make -e your.maintainer@address -f ../gentoo-0.9.12.tar.gz
510 </example>
511
512 <p>もちろん、"your.maintainer@address" の部分は changelog の
513 エントリやその他のファイルに記載するための、あなたの電子メール
514 アドレスに置き換えてくさい。またファイル名はあなたがパッケージ化
515 しようとしているプログラムのオリジナルソースアーカイブの名前に
516 置き換えてください。
517 詳細は <manref name="dh_make" section="1"> を参照してください。
518
519 <p>画面にはいろいろ表示されて、あなたが作ろうとしているパッケージ
520 がどういう種類のものか聞いてきます。gentoo は 単一バイナリパッケージ -
521 すなわちパッケージに含まれるバイナリが一つだけで、一つの .deb ファイル
522 のみが作成される - ですので最初の選択肢を選び、「s」キーを押しましょう。
523 その後、画面に表示される情報をよく読み、確認したら &lt;enter&gt; を押して
524 ください。
525
526 <p>初めてパッケージを作るというときには、マルチバイナリパッケージや
527 ライブラリに手を出さない方が無難です。この話は前にもしましたね。
528 実際には作業自体はそれほど大変ではないのですが、ちょっとだけ
529 より多くの知識が必要になります。そのため、ここではその作業について
530 一切説明しません。
531
532 <p>dh_make の実行は <strong>ただ一度だけ</strong> です。注意して
533 ください。既に「Debian 化」された同じディレクトリで再び実行すると、
534 正しく動作しないでしょう。これはつまり、将来パッケージの改訂版や
535 新バージョンをリリースする時には別の方法を使うことになる、という
536 ことでもあります。パッケージの更新作業についての詳細は後で説明する
537 <ref id="update"> の部分を読んでください。
538
539 <chapt id="modify">ソースコードの変更
540
541 <p>ふつう、プログラムは自分自身を /usr/local 以下のディレクトリに
542 インストールするようになっています。しかし、Debian システムにおいては、
543 /usr/local 以下はシステム管理者(とユーザ)の個人的利用のために
544 予約されているので、Debian パッケージはこのディレクトリを使っては
545 いけないことになっています。
546 このため、(通常は Makefile に始まる) プログラムを生成するための
547 仕組を調べる必要があります。
548 Makefile というのは <manref name="make" section="1"> がこのプログラムを
549 自動生成するために利用するスクリプトです。
550 Makefile についての詳細は、<ref id="rules">を参照してください。
551
552 <p>もしあなたのプログラムが GNU <manref name="automake" section="1"> や
553 <manref name="autoconf" section="1"> を使っているのでしたら、ソースに
554 それぞれ Makefile.am や Makefile.in などのファイルが含まれているはずです。
555 このような場合には、Makefile ではなく、これらのファイルを変更する必要が
556 あります。何故なら、automake を実行すると Makefile.am から生成された
557 情報によって Makefile.in が上書きされ、また ./configure を実行すると
558 Makefile.in から生成した情報によって Makefile が上書きされるからです。
559 Makefile.am の編集には、automake の知識がすこしばかり必要になります。
560 これについては info automake で調べることができます。
561 一方、Makefile.in の編集は普通の Makefile の編集とほぼ同じです。
562 ただちょっと変数に気をつければいいだけです。変数というのは例えば
563 @CFLAGS@ や @LN_S@ などのように「@」で囲まれた文字列のことです。
564 これらの変数は ./configure を実行した際に実際の内容に置き換えられます。
565
566 <p>修正の具体的なやり方について<em>何から何まで</em>説明するにはとても
567 紙面が足りませんが、よくあるパターンとしては大体以下のようなものでしょう。
568
569 <sect id="destdir">サブディレクトリへのインストール
570
571 <p>ほとんどのプログラムは自分自身をシステムの既存のディレクトリ構造に
572 インストールするための仕組を備えています。これによってインストールされた
573 バイナリがユーザの $PATH に含まれるようになり、また附属文書やマニュアル
574 ページをシステムに共通の場所で見ることができるわけです。
575 しかし、もしこのようにしてしまうと、新しくインストールされた
576 プログラムはシステム上に既に存在している他のすべてのプログラムの
577 中に混ざってしまい、パッケージ作成のためのツールにとって
578 あなたのパッケージに含まれるファイルとそうでないファイルを
579 見分けることが非常に難しくなります。
580
581 <p>従って、何か別の、例えば以下のような方法を採用する必要があります。
582 プログラムを作業用の一時的なサブディレクトリ以下にインストールし、
583 メンテナー用ツールを使ってそのサブディレクトリの内容をちゃんと
584 動作する .deb パッケージに仕立て上げる、という方法です。
585 このディレクトリ以下にあるファイルは、パッケージをインストール
586 した際にすべてユーザのシステムへとインストールされます。
587 唯一の違いは dpkg がファイルをルートディレクトリ以下に
588 インストールするということだけです。
589
590 <p>通常、この一時的なディレクトリは、展開されたソースツリーの
591 中にある debian/ ディレクトリの下に作成されます。
592 またこのサブディレクトリは <file>debian/tmp</file> とか
593 <file>debian/パッケージ名</file> といった名前で呼ばれる
594 ことが多いです。
595
596 <p>パッケージを作成するためにはプログラムを debian/パッケージ名 に
597 インストールすることが必要ですが、一方 .deb パッケージをインストール
598 した後は、ルートディレクトリ以下に展開されるため、その状態で正しく
599 動作できるようにしなければならない、ということを覚えておいてください。
600 このため、ビルドシステムが
601 <tt>/home/me/deb/gentoo-0.9.12/usr/share/gentoo</tt>
602 といった特定のパスを示す文字列をパッケージファイルの中に
603 記録してしまわないよう、注意しなければなりません。
604
605 <p> GNU autoconf を使用するプログラムの場合は、これはとても
606 簡単な作業です。こうしたプログラムでは、
607 (例えば) /usr が本当の置き場所だということを残したままで、
608 任意のサブディレクトリにインストールできるような makefile が
609 デフォルトで作成されます。
610 あなたのプログラムが autoconf を使っている場合、dh_make が
611 それを検出して、こうした作業を行なうコマンドを自動的に設定
612 してくれるため、このセクションを読み飛ばしてしまってもいい
613 くらい非常に簡単な作業です。
614 しかし、その他のプログラムについては、おそらく自分で Makefile を調べて
615 編集する必要があるでしょう。
616
617 <p>以下は gentoo の Makefile 中の関連する部分です。
618
619 <p><example>
620 # Where to put binary on 'make install'?
621 BIN = /usr/local/bin
622
623 # Where to put icons on 'make install'?
624 ICONS = /usr/local/share/gentoo
625 </example>
626
627 <p>オリジナルの設定では、それぞれのファイルを <file>/usr/local</file> 以下に
628 インストールするようになっていることがわかります。
629 これらのパスを以下のように変更してください:
630
631 <p><example>
632 # Where to put binary on 'make install'?
633 BIN = $(DESTDIR)/usr/bin
634
635 # Where to put icons on 'make install'?
636 ICONS = $(DESTDIR)/usr/share/gentoo
637 </example>
638
639 <p>しかしなぜこのディレクトリなんでしょう。他の所じゃだめでしょうか?
640 だめです。
641 なぜなら Debian パッケージの場合、<file>/usr/local</file> 以下へファイルを
642 インストールすることは絶対に無いと決まっているからです。このディレクトリ
643 以下は個別のシステムの管理者が使うために予約されています。
644 Debian システム上でパッケージからインストールされるファイルは
645 その代わりに <file>/usr</file> へインストールされます。
646
647 <p>バイナリ、アイコン、文書など、それぞれのファイルを
648 保存すべき場所については、
649 「ファイルシステム体系基準」 (/usr/share/doc/debian-policy/fhs を参照)
650 の中でより正確に規定されています。もしまだ読んだことが無ければ、
651 ざっと目を通して、あなたのパッケージに関係しそうな箇所をきちんと
652 読んでおくことをお勧めします。
653
654 <p>そういうわけで、バイナリは /usr/local/bin ではなく /usr/bin へ
655 インストールしなければなりませんし、マニュアルページは
656 /usr/local/man/man1 の代わりに /usr/share/man/man1 へ
657 インストールする必要があります。
658 ここで gentoo の makefile にはマニュアルページに関する記述が
659 まったく無いことに注意してください。Debian ポリシーでは
660 すべてのプログラムがそれぞれマニュアルを用意しなければならないと
661 定めていますから、後で gentoo のマニュアルを作成して、それを
662 /usr/share/man/man1 以下へインストールすることにします。
663
664 <p>プログラムの中には、このようなパスを定義するための makefile 変数を
665 使っていないものもあります。このような場合、C のソースそのものを
666 いじって、指定された場所を使うように修正しなければなりません。
667 でもどこを、そして何を探せばよいのでしょうか?
668 以下のコマンドを実行すれば該当箇所を見つけることができます。
669
670 <p><example>
671 grep -rn usr/local/lib *.[ch]
672 </example>
673
674 <p>これを使うと、grep がソースツリーを再帰的に検索し、
675 該当箇所を見つけたらそのファイルの名前と検索対象の文字列
676 (ここでは usr/local/lib)を含む行とを表示します。
677
678 <p>見つかったファイルを編集して usr/local/ という部分を usr/ に
679 置き換えてください。これでもう作業完了です。
680 他の部分をいじってぐちゃぐちゃにしないよう気をつけましょう。:-)
681
682 <p>修正が終ったら、インストールターゲットを探しましょう(「install:」
683 で始まる行を探してください。この方法でたいていうまくいきます)。
684 Makefile の先頭で直接定義されているものを除いて、ディレクトリへの参照を
685 すべて変更してください。
686 gentoo の元々のインストールターゲットはこんな感じでした。
687
688 <p><example>
689 install: gentoo
690 install ./gentoo $(BIN)
691 install icons/* $(ICONS)
692 install gentoorc-example $(HOME)/.gentoorc
693 </example>
694
695 <p>修正後はこんな風になります。
696 <example>
697 install: gentoo-target
698 install -d $(BIN) $(ICONS) $(DESTDIR)/etc
699 install ./gentoo $(BIN)
700 install -m644 icons/* $(ICONS)
701 install -m644 gentoorc-example $(DESTDIR)/etc/gentoorc
702 </example>
703
704 <p>たぶんお気づきになったでしょうが、変更後はこのルールの
705 先頭に <tt>install -d</tt> コマンドが追加されています。
706 普通「make install」を実行するようなシステムなら /usr/local/bin や
707 その他のディレクトリは既にシステム上に存在しているでしょうから、
708 もともとの makefile ではこのコマンドは使われていませんでした。
709 しかし、Debian パッケージを作成する場合には、空っぽの(あるいは
710 まだ存在さえしていない)ディレクトリにインストールするわけですから、
711 これらのディレクトリのそれぞれを毎回作成する必要があります。
712
713 <p>ルールの最後には、上流作者が省略することの多い付加的な資料の
714 インストールなど、他の作業を追加することもできます。
715
716 <p><example>
717 install -d $(DESTDIR)/usr/share/doc/gentoo/html
718 cp -a docs/* $(DESTDIR)/usr/share/doc/gentoo/html
719 </example>
720
721
722 <p>鋭い人なら私が「install:」の行の「gentoo」を「gentoo-target」に変えた
723 のに気づくでしょう。 こういうのをバグフィックスというのですな。:-)
724
725 <p>今のような、特に Debian パッケージだけに限定されない変更を行った場合、
726 毎回その内容を上流メンテナに報告し、プログラムの次のリビジョンに反映して
727 もらうことで、他のすべての利用者にとっても有益な結果をもたらすように
728 しましょう。
729 また、あなたの修正を送る前に、Debian や Linux (あるいは Unix でさえも!)
730 だけに通用するものでなく、できるだけ広範囲に通用するよう心がけることで、
731 上流の開発者があなたの変更を採用しやすくなるように努めましょう。
732
733 <p>上流開発者に debian/ 以下のファイルを送る必要はありません。
734 注意してください。
735
736 <sect id="difflibs">使用ライブラリの違い
737
738 <p>よくある問題としてもう一つ、ライブラリの問題があります。
739 ライブラリはしばしばプラットフォームごとに異なります。
740 例えば、 Makefile は Debian システム上に存在しない
741 ライブラリへの参照すら含んでいるかもしれません。
742 その場合には、Debian 上に存在する互換のライブラリを
743 指すように変更してやらなければなりません。
744
745 <p>そんなわけで、もしあなたのプログラムの Makefile (または Makefile.in)
746 に以下のような部分があったら(そしてうまくコンパイルできなかったら)、
747
748 <p><example>
749 LIBS = -lcurses -lなんとか -lかんとか
750 </example>
751
752 <p>こういう風に変えましょう。今度はきっと大丈夫です。
753 <p><example>
754 LIBS = -lncurses -lなんとか -lかんとか
755 </example>
756
757 <chapt id="dreq"> debian/ ディレクトリ以下に無くてはならないファイル
758
759 <p>プログラムのソースディレクトリの中に、「debian」という
760 名前の新しいディレクトリが作られています。
761 パッケージの動作を自分の意図に合わせて調整するには、
762 このディレクトリに存在する多くのファイルをその編集します。
763 最も重要なファイルは「control」、「changelog」、「copyright」、
764 そして「rules」であり、これらのファイルはすべてのパッケージが
765 必ず用意しなければならないものです。
766
767 <sect id="control">「control」ファイル
768
769 <p>このファイルには <prgn/dpkg/ と <prgn/dselect/ が
770 パッケージを管理するために利用する
771 様々な情報が記載されています。
772
773 <p>以下は dh_make が作ってくれる control ファイルのひな型です。
774
775 <p><example>
776 1 Source: gentoo
777 2 Section: unknown
778 3 Priority: optional
779 4 Maintainer: Josip Rodin &lt;joy-mg@debian.org&gt;
780 5 Build-Depends: debhelper (>> 3.0.0)
781 6 Standards-Version: 3.5.2
782 7
783 8 Package: gentoo
784 9 Architecture: any
785 10 Depends: ${shlibs:Depends}
786 11 Description: &lt;insert up to 60 chars description&gt;
787 12 &lt;insert long description, indented with spaces&gt;
788 </example>
789 (行番号は筆者が書き加えました)
790
791 <p>1-6 行目はソースパッケージの管理情報です。
792
793 <p>1 行目はソースパッケージの名前です。
794
795 <p>2 行目はディストリビューションにおいて
796 このパッケージが所属するセクションです。
797
798 <p>既にお気づきかも知れませんが、Debian はいくつかのセクションに
799 分割されています。セクションには main (完全にフリーなソフトウェア)、
800 non-free (実際の所フリーであるとはいえないソフトウェア)、そして
801 contrib (それ自身はフリーなソフトウェアであるけれども、non-free な
802 ソフトウェアが無ければ使えないもの) があります。
803 更に、これらの下には各パッケージをおおまかに分類する
804 論理的なサブセクションが用意されており、
805 そこに含まれるパッケージの種類を簡単に説明するような
806 名前がつけられています。
807 つまり、管理者専用のプログラムのために「admin」、
808 基本的なツールのために「base」、
809 プログラマーのためのツールが含まれる「devel」、
810 文書の「doc」、ライブラリの「libs」、
811 電子メールの読み書きに使うリーダや
812 電子メールサーバを構築するためのデーモンは「mail」、
813 ネットワーク関係のアプリケーションやデーモンの「net」、
814 他のどんな分類にもあてはまらないような X11 用の
815 プログラムは「x11」など、そしてさらに多くのものが
816 用意されています。(訳注:「デーモン」とは多くの場合
817 「サーバー」を作るためのものです。ご存知ですよね。)
818
819 <p>ここでは x11 に変更しておきましょう。
820 (「main」セクションは省略時のデフォルトなので、
821 ここには書きません。)
822
823 <p>3 行目はこのパッケージをインストールすることが
824 ユーザにとってどれくらい重要なものかを示しています。
825 このフィールドに何を設定すべきかについては、
826 Debian ポリシーマニュアルの説明を読んでください。
827 新規パッケージの場合、優先度「optional」(選択可能)
828 としておけば、通常は問題無いでしょう。
829
830 <p>セクション(Section) と優先度 (Priority) は、
831 <prgn/dselect/ のようなフロントエンドが
832 パッケージをソートする時とデフォルトを選ぶ時に
833 使われます。パッケージを Debian にアップロードすると、
834 これらのフィールドの値はアーカイブメンテナたちによって
835 上書きされる場合があります。このような場合、該当する
836 パッケージのメンテナにそのことを知らせるための
837 電子メールが届きます。
838 (訳注:具体的な仕組みを説明すると、dpkg などのツールは
839 アーカイブ中に用意される「Packages」ファイルの情報を
840 パッケージ自体に記録された情報より優先するようになって
841 います。そしてこの Packages ファイルの作成と更新は
842 アーカイブメンテナの(たくさんある)仕事のひとつ、
843 というわけです。)
844
845 <p>この gentoo は通常の優先度を持つパッケージですし、
846 他のパッケージと衝突することもありませんから、
847 ここでは「optional」のままにしておきましょう。
848
849 <p>4 行目はメンテナの名前と電子メールアドレスです。
850 電子メールの宛先として問題無くそのまま使えるように
851 記載してください。Debian のバグ追跡システムは、
852 パッケージがアップロードされたら、ここに記載された
853 情報を使ってあなたにユーザーからのバグ報告を
854 転送しようとします。コンマ ,、アンド記号 &、
855 および括弧 () などの使用は避けてください。
856
857 <p>5 行目はあなたのパッケージを生成するために必要となる
858 パッケージのリストです。例えば gcc や make のように
859 暗黙の前提としてこのリストに含まれているパッケージも
860 いくつかあります。詳しくは <package/build-essential/
861 パッケージをご覧ください。もしあなたのパッケージを
862 生成するために、このリストに記載されていない、
863 標準的でないコンパイラやその他のツールが必要なら、
864 それらを「Build-Depends」行に追加しておきます。
865 複数のパッケージを記載する場合は、コンマで区切ってください。
866 このフィールドの書式については、バイナリ依存関係(後述)の
867 ところでもうすこし詳しく説明します。
868
869 <p>ここには Build-Depends-Indep や Build-Conflicts など、
870 その他のソース依存関係を設定することもできます。
871 これらの情報は Debian がサポートしている他のコンピュータ
872 プラットフォーム用にバイナリパッケージを作成する
873 自動パッケージ生成プログラムによって利用されます。
874 ソース依存関係についての詳細は Debian ポリシーマニュアルを、
875 また Debian がサポートしているプラットフォーム
876 (アーキテクチャ)と、ソフトウェアをそれらへ移植
877 (ポート)する方法については開発者レファレンスを
878 参照してください。
879
880 <p>以下のようにすれば、自分のパッケージを生成するために
881 必要となるパッケージを見つけることができます。
882 <example>
883 strace -f -o /tmp/log ./configure
884 # or make instead of ./configure, if the package don't use autoconf
885 for x in `dpkg -S $(grep open /tmp/log|perl -pe 's!.* open\(\"([^\"]*).*!$1!' |grep "^/"| sort | uniq| grep -v "^\(/tmp\|/dev\|/proc\)" ) 2>/dev/null|cut -f1 -d":"| sort | uniq`; do echo -n "$x (>=" `dpkg -s $x|grep ^Version|cut -f2 -d":"` "), "; done
886 </example>
887
888 <p>Gentoo の場合、パッケージを生成するために
889 <package/xlibs-dev/、<package/libgtk1.2-dev/
890 および <package/libglib1.2-dev/ が必要でしたので、
891 これらを <package/debhelper/ に追加しておきます。
892
893 <p>6 行目はこのパッケージが準拠している Debian ポリシー基準の
894 バージョン、つまりあなたがパッケージを作成する際に参照した
895 ポリシーマニュアルのバージョンです。
896
897 <p>8 行目はバイナリパッケージの名前です。これは通常ソースパッケージ
898 の名前と同じですが、いつもそうだとは限りません。
899
900 <p>9 行目にはバイナリパッケージをコンパイル可能な CPU アーキテクチャ
901 を記述します。
902 ここを「any」のままにしておけば、
903 <manref name="dpkg-gencontrol" section="1">が、このパッケージを
904 コンパイルしたマシンに合わせて適当に埋めてくれます。
905
906 <p>
907 あなたのパッケージが特定のアーキテクチャに依存しないのであれば
908 (例えば、シェルや Perl のスクリプトであるとか、あるいは
909 文書のパッケージである場合) ここを「all」に変更し、パッケージの
910 生成に「binary-arch」ではなく「binary-indep」を使う方法について
911 の説明をあとで <ref id="rules"> の項で読んでおいてください。
912
913 <p>10 行目は Debian パッケージ管理システムの最も強力な機能のひとつ
914 を示しています。
915 それぞれのパッケージは様々な形で相互に関係情報を持つことができます。
916 パッケージ間の関係には、Depends: すなわち「依存」の他に、Recommends:、
917 Suggests:、Pre-depends:、Conflicts:、Provides:、Replaces: が
918 あります。
919
920 <p>dpkg、dselect、APT (そしてそのフロントエンド) などの
921 パッケージ管理ツールは、通常これらの関係を処理する場合に、
922 同じ動作をします。
923 そうでない場合については、追々説明していきます。
924 (<manref name="dpkg" section="8">、
925 <manref name="dselect" section="8">、
926 <manref name="apt" section="8">、
927 <manref name="aptitude" section="1">
928 などを参照してください)。
929
930 <p>以下にこれらの依存関係が通常持つ意味を説明します。
931
932 <p><list>
933 <item>Depends: 「依存」
934 <p>パッケージはここで指定したパッケージをインストールしない限り
935 インストールされません。
936 あなたのプログラムが特定のパッケージに依存していて、そのパッケージが
937 存在しない限り全く動作しない (または非常に重大な問題が発生する)
938 場合には、これを使いましょう。</item>
939
940 <item>Recommends: 「推奨」
941 <p>dselect や aptitude などのフロントエンドの場合、ユーザが
942 インストールのためにパッケージを選択すると、それが「推奨」
943 しているパッケージも一緒にインストールするよう促します。
944 さらに dselect の場合には、「Q」または「X」キーで強制的に
945 やめさせるまで、推奨されたパッケージをインストールするよう、
946 何度でも繰り返し確認を求めてきます。
947 しかし dpkg と apt-get の場合、「推奨」されたパッケージに
948 関する情報は無視され、あるパッケージをインストールしても、
949 そのパッケージが「推奨」しているパッケージについては何の
950 メッセージも表示しませんし、もちろんインストールもしません。
951 このフィールドには、厳密に言えばあなたのプログラムの動作に
952 必須ではないけれど、一緒に使うことがほぼ前提となっている
953 ようなパッケージを指定しましょう。</item>
954
955 <item>Suggests: 「提案」
956 <p>ユーザがパッケージをインストールする際、dselect や aptitude の
957 ようなフロントエンドはすべて、選択したパッケージによって「提案」
958 されているパッケージも合わせてインストールするかどうか聞いてきます。
959 dpkg と apt-get の場合はまったく気にしません。
960 あなたのパッケージの動作に必要というわけではないが、これがあると
961 もっと便利に使える、というパッケージについては、この指定を使って
962 ください。</item>
963
964 <item>Pre-Depends: 「先行依存」
965 <p>これは Depends: よりも強い関係を示します。
966 ここで指定されたパッケージがあらかじめインストールされ、
967 <em>かつ適切に設定されて</em> いない限り、どのパッケージ
968 管理ツールもあなたのパッケージをインストールしません。
969 これを使う前に、まずは debian-devel メーリングリストで
970 相談しましょう。
971 <strong>できるだけ</strong> 使わないようにしましょう。
972 早い話が、使っちゃいけません。:-)</item>
973
974 <item>Conflicts: 「競合」
975 <p>ここで指定されたパッケージがすべて削除されない限り、
976 あなたのパッケージはインストールされません。
977 特定のパッケージが存在しているとあなたのプログラムが
978 動作しない (または非常に重大な問題が起きる) 場合に、
979 この指定を使います。</item>
980
981 <item>Provides: 「提供」
982 <p>ほぼ同じ機能を持つパッケージが複数あって、選択の余地が
983 ある場合のために、仮想パッケージ名が定義されています。
984 仮想パッケージ名の一覧は、ファイル
985 /usr/share/doc/debian-policy/virtual-package-names-list.txt.gz
986 にあります。
987 あなたのプログラムが既存の仮想パッケージに相当する機能を
988 提供する場合には、これを使います。</item>
989
990 <item>Replaces: 「置換」
991 <p>あなたのプログラムが他のパッケージに含まれるファイルを
992 上書きする場合、または他のパッケージ全体を完全に置き換えて
993 しまう場合 (この場合は Conflicts: も一緒に指定してください)
994 この指定を使います。
995 ここで指定されたパッケージに含まれるファイルは、
996 あなたのパッケージのファイルによって上書きされます。
997 </item>
998 </list>
999
1000 <p>これらのフィールドはすべて共通の書式で記述します。
1001 指定したいパッケージ名をコンマで区切って並べてください。
1002 もしいくつか選択肢があれば、それらのパッケージ名を
1003 縦棒 <tt>|</tt> (パイプ記号)で区切って並べてください。
1004
1005 <p>あるバージョンより上でなければダメ、などというように
1006 パッケージのバージョン番号によって制限を加えることも可能です。
1007 これを指定したい場合にはそれぞれのパッケージ名の後で
1008 丸カッコ (パーレン) を開き、以下の関係式に続けて
1009 バージョン番号を指定してください。使用できる関係式は
1010 <tt>&lt;&lt;</tt>、<tt>&lt;=</tt>、<tt>=</tt>、<tt>&gt;=</tt>、
1011 <tt>&gt;&gt;</tt>で、それぞれ
1012 「指定されたものより古いバージョンのみ」、
1013 「指定されたバージョン以前」(指定のバージョンも当然含まれます)、
1014 「指定のバージョンのみ」
1015 「指定されたバージョン以降」(指定のバージョンも当然含まれます)、
1016 「指定されたものより新しいバージョンのみ」
1017 を意味します。
1018
1019 今まで説明してきた依存関係を使うことで、例えば以下のような
1020 指定も可能です。
1021
1022 <p><example>
1023 Depends: foo (>= 1.2), libbar1 (= 1.3.4)
1024 Conflicts: baz
1025 Recommends: libbaz4 (>> 4.0.7)
1026 Suggests: quux
1027 Replaces: quux (<< 5), quux-foo (<= 7.6)
1028 </example>
1029
1030 <p>最後に、知っておかなければいけない機能をもうひとつ。
1031 それは $(shlibs:Depends) です。パッケージを生成する際に、
1032 その中身が一時的なディレクトリにインストールされた後、
1033 そこに含まれるバイナリとライブラリによって利用されている
1034 共有ライブラリと、それらの共有ライブラリを含むパッケージ
1035 の名前 (例えば libc6 や xlib6g など) が
1036 <manref name="dh_shlibdeps" section="1"> によって自動的に
1037 調べられます。そしてその結果は
1038 <manref name="dh_gencontrol" section="1"> に渡され、control
1039 ファイル中の $(shlibs:Depends) と置換されます。
1040 これを使えば、あなた自身が自分で共有ライブラリを調べて記述する
1041 必要はありません。
1042
1043 <p>ここまでの説明でわかるように、今回は Depends: 行を dh_make が
1044 生成してくれたデフォルトの状態のままにしておくことができます。
1045 gentoo は「file」プログラム/パッケージによって提供される機能を
1046 いくつか利用することができるので、10 行目の後に新しい行を追加
1047 して、<tt>Suggests: file</tt> を記入します。
1048
1049 <p>11 行目はこのパッケージに関する短い説明です。多くの人々は
1050 一行 (半角) 80 文字幅のスクリーンでこれを見ますから、
1051 (半角) 60 文字以上にしてはいけません。
1052 今回は「A fully GUI configurable X file manager using GTK+」
1053 としました。
1054
1055 <p>12 行目はこのパッケージに関する詳細な説明文です。
1056 ここでは一つの段落でパッケージについてより詳しく説明するように
1057 してください。それぞれの行の先頭は空白 (スペース文字) で
1058 始めなければいけません。
1059 また空白行を入れてはいけませんが、先頭の空白の後に .
1060 (半角ピリオド) をひとつ書くことで、それらしく見せることができます。
1061 さらに、説明文の後には空白行をひとつも入れてはいけません。
1062
1063 <p>以下が修正後の control ファイルです。
1064
1065 <p><example>
1066 1 Source: gentoo
1067 2 Section: x11
1068 3 Priority: optional
1069 4 Maintainer: Josip Rodin &lt;joy-mg@debian.org&gt;
1070 5 Build-Depends: debhelper (>> 3.0.0), xlibs-dev, libgtk1.2-dev, libglib1.2-dev
1071 6 Standards-Version: 3.5.2
1072 7
1073 8 Package: gentoo
1074 9 Architecture: any
1075 10 Depends: ${shlibs:Depends}
1076 11 Suggests: file
1077 12 Description: A fully GUI configurable GTK+ file manager
1078 13 gentoo is a file manager for Linux written from scratch in pure C. It
1079 14 uses the GTK+ toolkit for all of its interface needs. gentoo provides
1080 15 100% GUI configurability; no need to edit config files by hand and re-
1081 16 start the program. gentoo supports identifying the type of various
1082 17 files (using extension, regular expressions, or the 'file' command),
1083 18 and can display files of different types with different colors and icons.
1084 19 .
1085 20 gentoo borrows some of its look and feel from the classic Amiga file
1086 21 manager "Directory OPUS" (written by Jonathan Potter).
1087 </example>
1088 (行番号は筆者が書き加えました)
1089
1090 <sect id="copyright">「copyright」ファイル
1091
1092 <p>このファイルにはパッケージの上流 (upstream) に関する
1093 リソース (URI など)、著作権、およびライセンスなどの情報を記載します。
1094 このファイルの書式は Debian ポリシーに規定されていませんが、
1095 内容については (13.6 節、「Copyright information (著作権情報)」に)
1096 規定されています。
1097
1098 <p>dh_make はデフォルトとして以下のようなひな型を作成します。
1099
1100 <p><example>
1101 1 This package was debianized by Josip Rodin joy-mg@debian.org on
1102 2 Wed, 11 Nov 1998 21:02:14 +0100.
1103 3
1104 4 It was downloaded from &lt;fill in ftp site&gt;
1105 5
1106 6 Upstream Author(s): &lt;put author(s) name and email here&gt;
1107 7
1108 8 Copyright:
1109 9
1110 10 &lt;Must follow here&gt;
1111 </example>
1112 (行番号は筆者が書き加えました)
1113
1114 <p>ここでファイルに追加すべき重要なことは、あなたがこのソフトウェアを
1115 入手した場所と、実際に有効な著作権表示およびライセンスです。
1116 原則としてライセンスは全文を含めなければなりません。
1117 ただし、もしプログラムのライセンスが GNU GPL または LGPL、BSD、
1118 あるいは Artistic などの良く知られたフリーソフトウェアのライセンス
1119 であって、どの Debian システムにも存在するディレクトリ
1120 /usr/share/common-licenses/ の中の適切なファイルを参照することで
1121 ライセンスの内容をすべて示すことができる場合に限って、
1122 全文をここに引用する必要はありません。
1123
1124 <p>つまり、gentoo の copyright ファイルはこんな風になります。
1125
1126 <p><example>
1127 1 This package was debianized by Josip Rodin joy-mg@debian.org on
1128 2 Wed, 11 Nov 1998 21:02:14 +0100.
1129 3
1130 4 It was downloaded from http://www.obsession.se/gentoo/
1131 5
1132 6 Upstream Author(s): Emil Brink &lt;emil@obsession.se&gt;
1133 7
1134 8 This software is copyright (c) 1998-99 by Emil Brink, Obsession
1135 9 Development.
1136 10
1137 11 You are free to distribute this software under the terms of
1138 12 the GNU General Public License.
1139 13 On Debian systems, the complete text of the GNU General Public
1140 14 License can be found in the file `/usr/share/common-licenses/GPL'.
1141 </example>
1142 (行番号は筆者が書き加えました)
1143
1144 <sect id="changelog">「changelog」ファイル
1145
1146 <p>これは必須のファイルです。ポリシーマニュアル 4.4 節
1147 「debian/changelog」にはこのファイルのための特別な書式が
1148 規定されています。
1149 この書式は dpkg やその他のプログラムによってあなたのパッケージの
1150 バージョン番号、レビジョン、ディストリビューション、それに緊急度
1151 (urgency) を識別するために利用されます。
1152
1153 <p>あなたが行なったすべての変更をきちんと記載しておくことは
1154 良いことであり、その意味でこのファイルはまた、パッケージメンテナ
1155 であるあなたにとっても重要なものです。
1156 あなたのパッケージをダウンロードした人々は、
1157 このファイルを見ることで、ユーザが最初に知っておくべき
1158 このパッケージに関する解決されていない問題があるかどうかを
1159 知ることができます。
1160 このファイルはバイナリパッケージ中に
1161 「/usr/share/doc/gentoo/changelog.Debian.gz」として保存されます。
1162
1163 <p>dh_make がデフォルトとして生成する changelog はこんな感じです。
1164
1165 <p><example>
1166 1 gentoo (0.9.12-1) unstable; urgency=low
1167 2
1168 3 * Initial Release.
1169 4
1170 5 -- Josip Rodin &lt;joy-mg@debian.org&gt; Wed, 11 Nov 1998 21:02:14 +0100
1171 6
1172 </example>
1173 (行番号は筆者が書き加えました)
1174
1175 <p>1 行目はパッケージ名、バージョン、ディストリビューション、
1176 そして緊急度 (urgency) です。
1177 ここに書くパッケージ名はソースパッケージの名前と一致していなければ
1178 なりません。
1179 またディストリビューションは「unstable」(または「experimental」)
1180 にすべきであり、緊急度は「low」より高いものに変更するべきでは
1181 ありません :-)
1182
1183 <p>3-5 行目はログエントリで、ここにこのリビジョンのパッケージで
1184 行われた変更を記述します (上流プログラムそのものの変更点では
1185 ありません - その目的のためには、上流作者によって作成され、
1186 /usr/share/doc/gentoo/changelog.gz としてインストールされる
1187 専用のファイルが存在しています)。
1188 新しい行はアスタリスク(「*」)で始まる最初の行の直前に挿入します。
1189 この操作は
1190 <manref name="dch" section="1"> を使うと便利ですが、
1191 その他の普通のテキストエディタを使って実行しても
1192 もちろん構いません。
1193
1194 <p>最終的にこんな風になればよいわけです。
1195
1196 <p><example>
1197 1 gentoo (0.9.12-1) unstable; urgency=low
1198 2
1199 3 * Initial Release.
1200 4 * This is my first Debian package.
1201 5 * Adjusted the Makefile to fix $DESTDIR problems.
1202 6
1203 7 -- Josip Rodin &lt;joy-mg@debian.org&gt; Wed, 11 Nov 1998 21:02:14 +0100
1204 8
1205 </example>
1206 (行番号は筆者が書き加えました)
1207
1208 <p>後述する <ref id="update"> の中で、changelog ファイルを
1209 更新する方法についてもっと詳しく説明します。
1210
1211 <sect id="rules">「rules」ファイル
1212
1213 <p>さて、今度は <manref name="dpkg-buildpackage" section="1"> が
1214 実際にパッケージを作成するために使う「rules」ファイルを
1215 調べる必要があります。
1216 このファイルは実はもう一つの Makefile といったものですが、
1217 上流ソースに含まれる Makefile とは違います。
1218 また debian/ ディレクトリに含まれる他のファイルとは異なり、
1219 このファイルには実行属性が付けられています。
1220
1221 <p>すべての「rules」ファイルは、他の Makefile と同じく、
1222 ソースからプログラムを構築する方法を記述したいくつかの
1223 ルールによって構成されています。それぞれのルールには
1224 ターゲット、ファイル名、あるいは実行されるべき動作
1225 (つまり「build:」や「install:」) などの名前がつけられて
1226 います。
1227 あるルールを実行するには (例えば「./debian/rules build」
1228 とか「make -f rules install」といった風に) そのルールを
1229 コマンドライン引数として指定します。
1230 ターゲット名の後には、依存関係、つまりそのルールが
1231 必要とするプログラムやファイルの名前を指定できます。
1232 この次の行から、先頭を &lt;タブ&gt;で始めてそのルールの
1233 中で実行すべきコマンドを書いていきます。コマンド行の
1234 数に制限はありません。いくらでも好きなだけ続けられます。
1235 新しいルールを始めるには、行の先頭からターゲット名の宣言を
1236 書きます。複数の空行、および「#」 (ハッシュ) で始まる行は
1237 行の終りまでコメントと見なされ、無視されます。
1238
1239 <p>これだけ読んでもわけが分からないかもしれませんが、dh_make が
1240 デフォルトとして作成する「rules」ファイルについて調べていくうちに、
1241 きっと理解できるようになります。
1242 また、info コマンドの「make」エントリーに、より詳細な説明が
1243 あるので、これも合わせて読んでおくと良いでしょう。
1244
1245 <p>dh_make によって作成された rules ファイルについて知っておくべき
1246 最も重要なことは、これが単なるひな型であり、ひとつの例でしかない、
1247 ということです。
1248 単純なパッケージならそのまま使えるかもしれませんが、
1249 もっと複雑なパッケージの場合には、必要に応じて追加したり
1250 削除したりすることをためらってはいけません。
1251 あなたが変えてはいけないのはたった一つ、rules ファイル内に
1252 記述された各ルールの名前だけです。
1253 パッケージ管理ツールはすべて、Debian ポリシーの規定に
1254 従ってこれらのルール名を参照するので、変更してしまうと
1255 うまくパッケージを生成できなくなってしまいます。
1256
1257 <p>dh_make はデフォルトの debian/rules ファイルとして
1258 (おおよそ) 以下のようなひな型を作成します。
1259
1260 <p><example>
1261 1 #!/usr/bin/make -f
1262 2 # Sample debian/rules that uses debhelper.
1263 3 # GNU copyright 1997 to 1999 by Joey Hess.
1264 4
1265 5 # Uncomment this to turn on verbose mode.
1266 6 #export DH_VERBOSE=1
1267 7
1268 8 # This is the debhelper compatibility version to use.
1269 9 export DH_COMPAT=4
1270 10
1271 11 CFLAGS = -g
1272 12 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
1273 13 CFLAGS += -O0
1274 14 else
1275 15 CFLAGS += -O2
1276 16 endif
1277 17
1278 18 build: build-stamp
1279 19 build-stamp:
1280 20 dh_testdir
1281 21
1282 22 # Add here commands to compile the package.
1283 23 $(MAKE)
1284 24 #/usr/bin/docbook-to-man debian/gentoo.sgml > gentoo.1
1285 25
1286 26 touch build-stamp
1287 27
1288 28 clean:
1289 29 dh_testdir
1290 30 dh_testroot
1291 31 rm -f build-stamp
1292 32
1293 33 # Add here commands to clean up after the build process.
1294 34 -$(MAKE) clean
1295 35
1296 36 dh_clean
1297 37
1298 38 install: build
1299 39 dh_testdir
1300 40 dh_testroot
1301 41 dh_clean -k
1302 42 dh_installdirs
1303 43
1304 44 # Add here commands to install the package into debian/gentoo.
1305 45 $(MAKE) install DESTDIR=$(CURDIR)/debian/gentoo
1306 46
1307 47 # Build architecture-independent files here.
1308 48 binary-indep: build install
1309 49 # We have nothing to do by default.
1310 50
1311 51 # Build architecture-dependent files here.
1312 52 binary-arch: build install
1313 53 dh_testdir
1314 54 dh_testroot
1315 55 # dh_installdebconf
1316 56 dh_installdocs
1317 57 dh_installexamples
1318 58 dh_installmenu
1319 59 # dh_installlogrotate
1320 60 # dh_installemacsen
1321 61 # dh_installpam
1322 62 # dh_installmime
1323 63 # dh_installinit
1324 64 dh_installcron
1325 65 dh_installman
1326 66 dh_installinfo
1327 67 # dh_undocumented
1328 68 dh_installchangelogs ChangeLog
1329 69 dh_link
1330 70 dh_strip
1331 71 dh_compress
1332 72 dh_fixperms
1333 73 # dh_makeshlibs
1334 74 dh_installdeb
1335 75 # dh_perl
1336 76 dh_shlibdeps
1337 77 dh_gencontrol
1338 78 dh_md5sums
1339 79 dh_builddeb
1340 80
1341 81 binary: binary-indep binary-arch
1342 82 .PHONY: build clean binary-indep binary-arch binary install
1343 </example>
1344 (行番号は筆者が書き加えました)
1345
1346 <p>1 行目は、シェルや Perl のスクリプトでおなじみの表現でしょう。
1347 これは、このファイルが /usr/bin/make によって処理されることを
1348 オペレーティングシステムに指示しています。
1349
1350 <p>6 行目から 9 行目にかけて記述されている、変数 DH_* の
1351 意味は、コメントとして書かれている短い説明を読めばすぐに
1352 わかるでしょう。DH_COMPAT についての詳細はマニュアル
1353 ページ <manref name="debhelper" section="1"> の
1354 「Debhelper compatibility levels (debhelper 互換レベル)」
1355 の項を参照してください。
1356
1357 <p>11 行目から 16 行目までは Debian ポリシー 11.1 節
1358 「Binaries (バイナリ)」に規定されたパラメータ
1359 DEB_BUILD_OPTIONS をサポートするための枠組です。
1360 簡単に言えば、このパラメータはバイナリをビルドする際に
1361 デバッグシンボルを付加するかどうか、またインストールの
1362 際にそれらをストリップすべきかどうかを制御します。
1363 繰り返しますが、ここに記載されているのは単なる枠組であり、
1364 どうすべきかという点についてヒントを示しているに過ぎない、
1365 ということに注意してください。
1366 実際にパッケージを開発する際には、デバッグシンボルの付加と
1367 インストール時のストリップについて、上流開発者がソフトウェアを
1368 生成する際にどのように扱っているかを調べ、そして自分自身で
1369 このパラメータをサポートする仕組を実装してください。
1370
1371 <p>通常、デバッグシンボルを付加するには、コンパイルの際に
1372 CFLAGS 変数を使って gcc に「-g」オプションを指定します。
1373 もしあなたのパッケージもこの方法でうまくいくようなら、
1374 build ルール (後述) の中で $(MAKE) を実行している箇所に
1375 <tt>CFLAGS="$(CFLAGS)"</tt> を <em>追加</em>して、この
1376 変数を指定します。もしあなたのパッケージが autoconf に
1377 よる configure スクリプトを利用しているなら、別の方法と
1378 して build ルールの中で ./configure を実行する際に
1379 上記の <tt>CFLAGS="$(CFLAGS)"</tt> を <em>前置き</em> して
1380 configure スクリプトに渡すこともできます。
1381
1382 <p>ストリップについて説明すると、たいていのプログラムは
1383 ストリップせずにインストールされるよう設定されており、
1384 また多くの場合、それを変更するためのオプションは用意されて
1385 いません。そのような場合でも Debian なら大丈夫、あなたは
1386 <manref name="dh_strip" section="1"> を利用することができます。
1387 これは DEB_BUILD_OPTIONS=nostrip フラッグが設定されているか
1388 どうかを調べて、このフラッグが有効な場合にはバイナリを
1389 ストリップせずにそのまま (エラーを出さずに) 終了してくれます。
1390
1391 <p>18 行目から 26 行目までは「build」 (およびその子供である
1392 「build-stamp」) ルールを記述しており、その中でプログラムを
1393 コンパイルするためにアプリケーション自身の Makefile を実行
1394 しています。コメントとして記載されている docbook-to-man の
1395 サンプルについては、後で説明する <ref id="manpage"> の箇所を
1396 参照してください。
1397
1398 <p>28 行目から 36 行目までに記述されている「clean」ルールは、
1399 パッケージの生成過程によって自動生成されたバイナリその他の
1400 不要なファイルをすべて削除します。
1401 このルールはどんな時でも (たとえソースツリーが <em/削除/
1402 されてしまっている状態でも!) きちんと動作しなければいけません。
1403 このため、強制オプションを使うか (たとえば rm なら「-f」)、
1404 返り値 (エラー) を無視する (コマンド名の前に「-」を追加)
1405 などの措置を講じてください。
1406
1407 <p>インストール方法を記述する「install」ルールは 38 行目から
1408 始まります。このルールは基本的にプログラム自身の Makefile に
1409 記述されている「install」ルールを実行しますが、インストール
1410 先は <tt>$(CURDIR)/debian/gentoo</tt> ディレクトリです -
1411 このために gentoo の Makefile の中で $(DESTDIR) を
1412 ルートインストールディレクトリとして指定しておいたのです。
1413
1414 <p>コメントにもあるように、48 行目の「binary-indep」ルールは
1415 アーキテクチャに依存しないパッケージを生成するために使われます。
1416 今回の例はそのようなパッケージではないため、ここでするべきことは
1417 何もありません。
1418
1419 <p>さあ、次のルール - 「binary-arch」の番です。52 行目から 79 行目に
1420 かけて記述されたこのルールでは、あなたのパッケージが Debian ポリシー
1421 に適合するよう、debhelper パッケージに収録されているいくつかの小さな
1422 ユーティリティを実行して、これから生成するパッケージ中のファイルに
1423 対してさまざまな操作を行ないます。
1424
1425 <p>もしあなたのパッケージが「Architecture: all」なら、パッケージを
1426 生成するために必要なコマンドをすべて「binary-indep」ルールの中で
1427 指定し、その代りに「binary-arch」ルールを空にしておかなければ
1428 いけません。
1429
1430 <p>debhelper プログラムの名前は dh_ で始まり、残りの部分は
1431 そのユーティリティが実際に行なう内容に関する説明となっています。
1432 これらはほとんど読めばすぐわかるような簡単なものですが、
1433 以下に説明を追加しておきます。
1434
1435 <list>
1436 <item><manref name="dh_testdir" section="1"> はあなたが正しい
1437 ディレクトリ (つまり、ソースディレクトリのトップレベル) に
1438 いるかどうかをチェックします
1439 <item><manref name="dh_testroot" section="1"> は「binary-arch」
1440 および「binary-indep」ターゲットと「clean」ルールの実行に必要な
1441 ルート権限をあなたが持っているかどうかチェックします。
1442 <item><manref name="dh_installman" section="1"> はマニュアル
1443 ページをパッケージ作成用ディレクトリの中の適切な場所へコピー
1444 します。ただしこれを使う際には、インストールしたいマニュアル
1445 ページの場所をソースディレクトリのトップレベルからの相対的な
1446 位置で指定しなければいけません。
1447 <item><manref name="dh_strip" section="1"> はデバッグ用ヘッダを
1448 実行形式ファイルおよびライブラリから取り除き、それらのサイズを
1449 小さくします。
1450 <item><manref name="dh_compress" section="1"> は
1451 マニュアルページとサイズが 4 kB より大きな附属文書を
1452 <manref name="gzip" section="1"> で圧縮します。
1453 <item><manref name="dh_installdeb" section="1"> はパッケージに
1454 関連するファイル (例えばメンテナースクリプトなど) を
1455 <file>debian/gentoo/DEBIAN</file> ディレクトリにコピーします。
1456 <item><manref name="dh_shlibdeps" section="1"> はライブラリや
1457 実行形式ファイルが依存している共有ライブラリを判定します。
1458 <item><manref name="dh_gencontrol" section="1"> は
1459 control ファイルに必要な情報を追加し、
1460 <file>debian/gentoo/DEBIAN</file> へインストールします。
1461 <item><manref name="dh_md5sums" section="1"> はパッケージ中の
1462 すべてのファイルに対して MD5 チェックサムを計算します。
1463 </list>
1464
1465 <p>これらすべての dh_* スクリプトが実際にはそれぞれ何をするのか、
1466 また他にはどんなオプションが使えるのか、などのさらに詳しい情報に
1467 ついては、それぞれのマニュアルページを参照してください。
1468 また、ここでは取り上げませんでしたが、非常に便利だと思われる
1469 dh_* スクリプトが他にもいくつか用意されています。
1470 これらに関しては、必要に応じて debhelper の説明書を読んでみて
1471 ください。
1472
1473 <p>binary-arch セクションの中にある、不要な処理を
1474 実行している行はすべてどんどんコメントにしてしまうか、
1475 あるいは削除してしまうべきです。
1476 gentoo の場合、examples、cron、init、man、そして info に
1477 関する処理は必要ありませんから、コメントにしておきます。
1478 また今回の場合、68 行目の「ChangeLog」を「FIXES」に変更して
1479 おきます。上流開発者 (upstream) の changelog (変更履歴)
1480 ファイルの名前が FIXES だからです。
1481
1482 <p>最後の 2 行は (説明しなかった他の行と同様に) 多少なりとも
1483 必要なものです。これらについては make のマニュアルや
1484 Debian ポリシーマニュアルの中に説明があります。
1485 今のところは、必ず知っておかなくてはいけないような重要な項目
1486 というわけではありません。
1487
1488 <chapt id="dother">debian/ の中にあるその他のファイル
1489
1490 <p>debian/ サブディレクトリには他にもいくつかのファイルが
1491 あるはずです。それらのほとんどには「.ex」サフィックスが
1492 付いており、そのファイルがただの例、サンプルであることを
1493 示しています。
1494 これらのファイルにはすべて目を通しておいてください。
1495 もしこれらの機能のどれかを使いたいと思ったり、また使う必要が
1496 生じたりした場合には、
1497
1498 <list>
1499 <item>関連する文書 (ヒント: Debian ポリシーマニュアル) を調べ、
1500 <item>必要に応じてそのファイルの内容を変更し、
1501 <item>「.ex」というサフィックスが付いていたら、それを取り除く
1502 ために名前を変更し、
1503 <item>必要なら「rules」ファイルを編集してください。
1504 </list>
1505
1506 <p>これらのファイルのうち、特によく利用されるものについては、
1507 以下のセクションに説明があります。
1508
1509 <sect id="readme">README.Debian
1510
1511 <p>パッケージに関して何か特別にユーザに知らせる必要がある情報や、
1512 オリジナルのソフトウェアとあなたが Debian パッケージにした
1513 バージョンとの相違点は、ここに記述しておくべきです。
1514
1515 <p>以下はデフォルトとして dh_make が生成するものです。
1516
1517 <example>
1518 gentoo for Debian
1519 ----------------------
1520
1521 &lt;possible notes regarding this package - if none, delete this file&gt;
1522
1523 Josip Rodin &lt;joy-mg@debian.org&gt;, Wed, 11 Nov 1998 21:02:14 +0100
1524 </example>
1525
1526 <p>今回は特に何も書き込む必要はありませんから、あとでこのファイルを
1527 削除しておきます。
1528
1529 <sect id="conffiles">conffiles.ex
1530
1531 <p>ソフトウェアに関して最もうんざりさせられることのひとつに、
1532 大変な量の時間と労力を費してプログラムをカスタマイズした後で
1533 そのための設定変更が一回のアップグレードによってすべて上書き
1534 されてしまった場合が挙げられるでしょう。
1535 Debian はこの問題を、設定ファイルを記録しておいて、パッケージを
1536 アップグレードする際に古い設定をそのまま使いたいかどうか質問する
1537 という方法で解決しました。
1538
1539 <p>この機能を使うには、パッケージのプログラムが使う各設定ファイル
1540 (たいてい /etc にあります) のフルパス名を 1 行にひとつずつ、
1541 <tt/conffiles/ という名前のファイルに記載します。
1542 gentoo では /etc/gentoorc という名前の設定ファイルが
1543 使われるので、これを <tt/conffiles/ ファイルに記載します。
1544
1545 <p>あなたのプログラムが設定ファイルを利用する場合であっても、
1546 その設定ファイルがプログラム自身によって頻繁に上書きされる
1547 ような場合には、パッケージをアップグレードするたびに dpkg に
1548 よって設定ファイルの変更について確認を求められることになるので、
1549 その設定ファイルを conffiles に登録しないほうが良いでしょう。
1550
1551 <p>あなたがパッケージにしたプログラムでは、設定ファイルを
1552 変更しない限り、誰も利用できない、というような場合も、
1553 その設定ファイルを conffile として登録しないほうが良いかも
1554 しれません。
1555
1556 <p>設定ファイルのサンプルを「メンテナースクリプト」によって
1557 用意することも可能です。詳細は <ref id="maintscripts"> を
1558 参照してください。
1559
1560 <p>もしあなたのプログラムが設定ファイルを一切利用しないので
1561 あれば、 debian/ ディレクトリから <tt/conffiles/ ファイルを
1562 問題無く削除できます。
1563
1564 <sect id="crond">cron.d.ex
1565
1566 <p>もしあなたのパッケージがきちんと動作するために、
1567 決められたスケジュールに従った定期的な作業の実行を
1568 必要とする場合、このファイルを使ってその作業を
1569 cron に登録します。
1570
1571 <p>ここではログのローテーションは扱いません。
1572 ログローテーションについては
1573 <manref name="dh_installlogrotate" section="1"> および
1574 <manref name="logrotate" section="8">
1575 を参照してください。
1576
1577 <p>もし必要無ければ、このファイルを削除してください。
1578
1579 <sect id="dirs">dirs
1580
1581 <p>このファイルには、我々のパッケージが必要としているが、
1582 通常のインストール手順 (make install) では作成されない
1583 ディレクトリを指定します。
1584
1585 デフォルトでは、こんな風になっています:
1586
1587 <p><example>
1588 usr/bin
1589 usr/sbin
1590 </example>
1591
1592 <p>一番最初のスラッシュが含まれない事に注意してください。
1593 たいていの場合、このファイルの内容は以下のように変更して
1594 おけば問題無いでしょう。
1595
1596 <p><example>
1597 usr/bin
1598 usr/share/man/man1
1599 </example>
1600
1601 ただ今回の場合、これらのディレクトリは Makefile 中の
1602 処理によって既に作成されているので、このファイルは
1603 不要であり、そのまま削除してしまうことにします。
1604
1605 <sect id="docs">docs
1606
1607 <p>このファイルには、dh_installdocs を使ってパッケージ
1608 生成用の一時的なディレクトリにインストールするために、
1609 パッケージに附属する資料のファイル名を指定します。
1610
1611 <p>ソースディレクトリのトップレベルに存在する「BUGS」、
1612 「README*」、「TODO」などの名前を持つファイルはすべて
1613 デフォルトとして含まれます。
1614
1615 <p>ここでは gentoo のために、附属文書をいくつか指定します。
1616
1617 <p><example>
1618 BUGS
1619 CONFIG-CHANGES
1620 CREDITS
1621 ONEWS
1622 README
1623 README.gtkrc
1624 TODO
1625 </example>
1626
1627 <p>別の方法として、このファイルを削除し、その代わり以下のように
1628 <tt/rules/ ファイルにある <tt/dh_installdocs/ コマンド行の中で
1629 これらの文書ファイル名を指定することも可能です。
1630
1631 <p><example>
1632 dh_installdocs BUGS CONFIG-CHANGES CREDITS ONEWS README \
1633 README.gtkrc TODO
1634 </example>
1635
1636 <p>ありそうにないことですが、パッケージのソース中にここで
1637 指定したくなるような附属文書がまったく存在しないという
1638 場合もあるかもしれません。
1639 そうした場合には、この docs ファイルを削除しても問題無い
1640 でしょう。
1641 ただし、その場合にも <tt/rules/ ファイルの中の
1642 <tt/dh_installdocs/ コマンドを削除してはいけません。
1643 このコマンドは <tt/copyright/ ファイルやその他のファイルを
1644 インストールするために利用されます。
1645
1646 <sect id="emacsen">emacsen-*.ex
1647
1648 <p>パッケージをインストールする際にバイトコンパイル可能な
1649 Emacs ファイルがあなたのパッケージに含まれている場合、
1650  これらの emacsen-* ファイルを利用してそれを設定することが
1651  できます。
1652
1653 <p>これらの emacsen-* ファイルは
1654 <manref name="dh_installemacsen" section="1">
1655 によってパッケージ作成用の一時的なディレクトリに
1656 インストールされます。このため、もしこれらのファイルを
1657 使用するのなら、<tt/rules/ ファイルの中にコメントとして
1658 書かれている、この dh_installemacsen コマンドを起動して
1659 いる行を、忘れずに有効にしておいてください。
1660
1661 <p>もしこれらの emacsen-* ファイルが必要なければ、
1662 削除しておいてください。
1663
1664 <sect id="initd">init.d.ex
1665
1666 <p>もしあなたのパッケージがデーモンであり、システムの起動時に
1667 自動的に動作させる必要があるとしたら、私が最初に勧めたことを
1668 あなたはまるっきり無視してしまったわけですよね。そうでしょ ? :-)
1669
1670 <p>これは <file>/etc/init.d/</file> スクリプトの
1671 非常に一般的なほんの骨組みのファイルにすぎません。
1672 もしこれを使いたければ、内容を大幅に変更する必要が
1673 あるでしょう。このファイルは
1674 <manref name="dh_installinit" section="1">
1675 によってパッケージ作成用の一時的なディレクトリに
1676 インストールされます。
1677
1678 <p>もし不要なら、このファイルを削除してください。
1679
1680 <!-- updated for version 1.2, t-sano, 2002 Apr 27 -->
1681
1682 <sect id="manpage">manpage.1.ex, manpage.sgml.ex
1683
1684 <p>すべてのプログラムは man ページを持つべきです。
1685 もし無かったら、これらのひな型のどちらかを利用して、
1686 必要な情報を追加すれば作成できます。
1687
1688 <p>マニュアルページは通常
1689 <manref name="nroff" section="1">
1690 を利用して作成されます。
1691 これにならって、<tt/manpage.1.ex/ も nroff で
1692 作成されています。
1693 <manref name="man" section="7"> のマニュアルページには、
1694 このファイルの編集方法についての簡潔な説明があります。
1695
1696 <p>一方、もし nroff より SGML のほうが好みでしたら、
1697 <tt/manpage.sgml.ex/ のほうをひな型として使うことも
1698 できます。こちらの場合には、以下の手順が必要です。
1699 <list>
1700 <item>パッケージ <package/docbook-to-man/ のインストール
1701 <item><tt/control/ ファイルの <tt/Build-Depends/ 行へ
1702 <tt/docbook-to-man/ を追加
1703 <item><tt/rules/ ファイルに記述された「build」ルールの
1704 中で docbook-to-man を実行している行を有効にする
1705 </list>
1706
1707 <p>それから、このファイルの名前を <tt/gentoo.sgml/ と
1708 いった名前に変更することを忘れないように!
1709
1710 <p>最終的なマニュアルページファイルの名前には、そのマニュアル
1711 ページで解説するプログラムの名前が含まれているべきです。
1712 このため、ここではファイル名を「gentoo」から「manpage」に
1713 変更します。ファイル名にはまた、デフォルトの拡張子として
1714 「.1」が含まれていますが、これはこのファイルがユーザー
1715 コマンドのマニュアルページであることを示しています。
1716 この拡張子の示す分類が正しいものであることを確認して
1717 おいてください。
1718 マニュアルページの分類をまとめたリストを以下に示します。
1719
1720 <p><example>
1721 セクション | 説明 | メモ
1722 1 ユーザコマンド 実行可能なコマンドやスクリプト
1723 2 システムコール カーネルの提供する機能
1724 3 ライブラリコール システムライブラリに含まれる機能
1725 4 特別ファイル たいていは /dev 内にあるもの
1726 5 ファイルの書式 例えば /etc/passwd の書式
1727 6 ゲーム またはその他のおもしろいプログラム
1728 7 マクロパッケージ man マクロのようなもの
1729 8 システム管理 実行するのに root 権限が必要なものなど
1730 9 カーネルルーチン 標準的でないシステムコールや内部仕様
1731 </example>
1732
1733 <p>そんなわけで gentoo のman ページは gentoo.1 と呼ばれることに
1734 なります。X 用のプログラムの場合、例えば <tt/gentoo.1x/ のように
1735 分類番号に「x」を追加することもできます。
1736 元のソースには gentoo.1 という man ページが含まれていなかったので、
1737 上に説明したサンプルと、上流開発者が提供している文書からの情報を
1738 もとに筆者が作成しました。
1739
1740 <sect id="menu">menu.ex
1741
1742 <p>X Window System のユーザはたいていウィンドウマネージャを
1743 使っており、そのメニュー機能を設定することで好きなプログラムを
1744 ウィンドウマネージャから起動できます。
1745 もしユーザが Debian の <package/menu/ パッケージをインストール
1746 していれば、システムにあるすべてのプログラム用のメニューが作成され、
1747 menu に対応したウィンドウマネージャから利用できます。
1748
1749 <p>以下が dh_make によって生成されたデフォルトの <tt/menu.ex/
1750 ファイルです。
1751
1752 <p><example>
1753 ?package(gentoo):needs=X11|text|vc|wm section=Apps/see-menu-manual\
1754 title="gentoo" command="/usr/bin/gentoo"
1755 </example>
1756
1757 <p>コロン (:) の後の最初の「needs」フィールドには、
1758 プログラムがどういう種類のインターフェースを必要とするかを
1759 指定します。このフィールドはデフォルトとして列挙された
1760 選択肢のどれか (例えばテキスト、X11 など) に変更してください。
1761
1762 <p>次は「section」、プログラムのエントリーが表示される
1763 メニューやサブメニューの指定です。現在のセクション一覧は
1764 <file>/usr/share/doc/debian-policy/menu-policy.html/ch2.html#s2.1</file> に
1765 記載されています。
1766
1767 <p>「title」フィールドはプログラムの名称です。
1768 好みによって、大文字から始めることもできます。
1769 ただし、なるべく短くしておきましょう。
1770
1771 <p>最後の「command」フィールドは、実際にプログラムを
1772 実行するコマンドです。
1773
1774 <p>さて、今回はこんな風に menu エントリを変えましょう。
1775
1776 <p><example>
1777 ?package(gentoo): needs=X11 section=Apps/Tools title="Gentoo" command="gentoo"
1778 </example>
1779
1780 <p>他にも「longtitle」、「icon」、「hints」などの
1781 フィールドを追加することができます。
1782 より詳細な説明は
1783 <manref name="menufile" section="5">、
1784 <manref name="update-menus" section="1">、
1785 および <file>/usr/share/doc/debian-policy/menu-policy.html/</file> を
1786 参照してください。
1787
1788 <sect id="watch">watch.ex
1789
1790 <p>このファイルを
1791 <manref name="uscan" section="1"> および
1792 <manref name="uupdate" section="1"> プログラム
1793 (これらは <package/devscripts/ パッケージにあります) と
1794 合わせて使うことによって、オリジナルソースを入手したサイトの
1795 更新をチェックすることができます。
1796
1797 <p>今回は以下のようにしました。
1798
1799 <p><example>
1800 # watch control file for uscan
1801 # Site Directory Pattern Version Script
1802 ftp.obsession.se /gentoo gentoo-(.*)\.tar\.gz debian uupdate
1803 </example>
1804
1805 <p>ヒント:このファイルを作成したら、インターネットに接続し、ソースを
1806 展開したディレクトリの中から「uscan」を試しに実行してみるとよいでしょう。
1807 それから、マニュアルページも読んでみてください。:)
1808
1809 <sect id="doc-base">ex.package.doc-base
1810
1811 <p>もしあなたのパッケージがマニュアルページや info 形式の
1812 文書以外に附属文書を含んでいるのなら、
1813 「<package/doc-base/」ファイルを使ってそれを登録し、
1814 ユーザがそれらの附属文書を、例えば
1815 <manref name="dhelp" section="1"> や
1816 <manref name="dwww" section="1"> あるいは
1817 <manref name="doccentral" section="1"> などの
1818 コマンドで参照できるようにするべきです。
1819
1820 <p>これには通常 <file>/usr/share/doc/packagename/</file>
1821 の中に収められるような HTML、PS および PDF などの形式の
1822 附属文書が含まれます。
1823
1824 <p>以下に gentoo の doc-base ファイルの例を示します。
1825
1826 <p><example>
1827 Document: gentoo
1828 Title: Gentoo Manual
1829 Author: Emil Brink
1830 Abstract: This manual describes what Gentoo is, and how it can be used.
1831 Section: Apps/Tools
1832
1833 Format: HTML
1834 Index: /usr/share/doc/gentoo/html/index.html
1835 Files: /usr/share/doc/gentoo/html/*.html
1836 </example>
1837
1838 <p>このファイルの書式については
1839 <manref name="install-docs" section="8"> および
1840 <file>/usr/share/doc/doc-base/doc-base.html/</file> にある
1841 <package/doc-base/ のマニュアルを参照してください。
1842
1843 <sect id="maintscripts">postinst.ex、preinst.ex、postrm.ex、prerm.ex
1844
1845 <p>これらのファイルはメンテナスクリプトと呼ばれるもので、
1846 パッケージの制御パートに収録され、
1847 あなたのパッケージがインストール、アップグレード、あるいは
1848 削除されるときに dpkg によって実行されます。
1849
1850 <p>今のところは、メンテナスクリプトを手でいじるのは、
1851 できるだけ避けるようにするべきでしょう。
1852 というのも、これらはどんどん複雑になっていってしまう傾向が
1853 あるからです。
1854 詳しくはポリシーマニュアルの第 6 章と
1855 dh_make によって用意されたこれらのサンプルファイルを
1856 注意して読んでください。
1857
1858 <chapt id="build">パッケージの構築
1859
1860 <p>これでパッケージを構築する準備が整いました。
1861
1862 <sect id="completebuild">完全な再構築
1863
1864 <p>プログラムのメインディレクトリに移動して
1865 以下のコマンドを実行してください:
1866
1867 <p><example>
1868 dpkg-buildpackage -rfakeroot
1869 </example>
1870
1871 <p>このコマンドは、あなたのためにパッケージ構築の
1872 作業をすべて行なってくれます。これには以下の作業が
1873 含まれます。
1874
1875 <list>
1876 <item><prgn/fakeroot/ を使ったソースツリーの初期化 (debian/rules clean)
1877 <item>ソースパッケージの構築 (dpkg-source -b)
1878 <item>プログラムの構築 (debian/rules build)
1879 <item><prgn/fakeroot/ を使ったバイナリパッケージの構築 (debian/rules binary)
1880 <item><prgn/gnupg/ を使ったソース <tt/.dsc/ ファイルへの署名
1881 <item><prgn/dpkg-genchanges/ および <prgn/gnupg/ を使った
1882 アップロード用 <tt/.changes/ ファイルの作成および署名
1883 </list>
1884
1885 <p>途中で GPG の秘密鍵を 2 回入力する必要がありますが、
1886 それを除けばこのプログラムにすべてお任せで大丈夫です。
1887
1888 <p>一連の作業が終わった後、上記のディレクトリ (<tt>~/debian/</tt>) には
1889 以下のファイルが作成されているはずです。
1890
1891 <p><list>
1892 <item><em>gentoo_0.9.12.orig.tar.gz</em>
1893
1894 <p>これは単に Debian 標準に合わせるために名前を変更しただけで、
1895 中身はオリジナルなソースコードの tar アーカイブです。
1896 これは <prgn/dh_make/ を最初に実行した際、「-f」オプションを
1897 指定して作成されたということを覚えておいてください。
1898
1899 <item><em>gentoo_0.9.12-1.dsc</em>
1900
1901 <p>これはソースコードの内容の概要です。このファイルは
1902 あなたの「control」ファイルから生成され、
1903 <manref name="dpkg-source" section="1"> によって
1904 ソースを展開する時に使われます。
1905 このファイルは GPG で署名されているので、本当にあなた自身が
1906 作成したものかどうかを利用者が検証できます。
1907
1908 <item><em>gentoo_0.9.12-1.diff.gz</em>
1909 <p>この圧縮されたファイルにはあなたがオリジナルのソースコードに
1910 行なったすべての変更や追加などの情報が「unified diff」の形式で
1911 含まれています。これは <manref name="dpkg-source" section="1">
1912 によって生成され、また利用されます。警告: もしオリジナルの
1913 tar アーカイブの名前を packagename_version.orig.tar.gz の形式に
1914 変更していなかった場合、<prgn/dpkg-source/ を使って
1915 適切な .diff.gz ファイルを作成できなくなります!
1916
1917 <p>上記の 3 つのファイルを使えば、誰でも簡単にあなたのパッケージを
1918 最初から再構築できます。ソースツリーを取り出す手順は簡単です。
1919 単にこれらの 3 つのファイルをどこか別の場所にコピーして、
1920 <tt>dpkg-source -x gentoo_0.9.12-1.dsc</tt>.
1921 を実行するだけです。
1922
1923 <item><em>gentoo_0.9.12-1_i386.deb</em>
1924
1925 <p>これは作成されたバイナリパッケージです。他のすべてのパッケージと
1926 同じく、<prgn/dpkg/ を使ってインストールしたり削除したりできます。
1927
1928 <item><em>gentoo_0.9.12-1_i386.changes</em>
1929
1930 <p>このファイルは現在のレビジョンのパッケージにおける変更点を
1931 すべて記載したもので、Debian FTP アーカイブ管理プログラムに
1932 よってバイナリおよびソースパッケージを FTP アーカイブに
1933 インストールするために利用されます。
1934 これは「changelog」ファイルと .dsc ファイルとを元にして
1935 生成されます。このファイルは GPG で署名されているので、
1936 パッケージの利用者はこのファイルが本当にあなた自身が作成した
1937 ものかどうかをちゃんと判断できます。
1938
1939 <p>パッケージの保守管理を続けていくと、プログラムの動作が
1940 変更されたり新機能が追加されたりすることがあります。
1941 あなたのパッケージをダウンロードする人は、このファイルを見れば
1942 何が変わったのか一目で分かります。
1943 またこのファイルの中身は Debian アーカイブ管理プログラムによって
1944 debian-devel-changes メーリングリストへ流されます。
1945
1946 <p>.dsc ファイルと .changes ファイルに記載されている長い数字の
1947 羅列は各ファイルの MD5 チェックサムで、パッケージをダウンロード
1948 した人は <manref name="md5sum" section="1"> を使って整合性を
1949 テストすることができます。もし数字が一致しない場合には、
1950 ファイルが壊れているか、あるいは何者かによって改ざんされている
1951 と分かるわけです。
1952 </list>
1953
1954 <sect id="quickrebuild">部分的な再構築
1955
1956 <p>大規模なパッケージの場合には、<file>debian/rules</file> を
1957 ちょっといじるたびに、毎回最初からパッケージの再構築を
1958 やりなおしたくはないでしょう。
1959 テスト目的の場合、以下のようにすれば上流 (upstream) ソースの
1960 再構築をしないで .deb ファイルを生成できます。
1961
1962 <p><example>
1963 fakeroot debian/rules binary
1964 </example>
1965
1966 <p>最終的にきちんとテストが完了したら、正しい手順に従って
1967 パッケージを最初から再構築することを忘れないでください。
1968 このやり方で生成した .deb ファイルをアップロードしようと
1969 しても、おそらくきちんとアップロードできないでしょう。
1970
1971 <chapt id="checkit">できたパッケージの誤りを調べる
1972
1973 <p><manref name="lintian" section="1"> をあなたの .changes ファイルに
1974 かけてみましょう。このプログラムはパッケージ化におけるよくある間違いを
1975 チェックしてくれます。実行するコマンドは以下のとおりです。
1976
1977 <p><example>
1978 lintian -i gentoo_0.9.12-1_i386.changes
1979 </example>
1980
1981 <p>もちろん、ファイル名はあなたのパッケージのために生成された
1982 .changes ファイルの名前に置き換えてください。
1983 もしエラー (E: で始まる行) が表示されたなら、説明 (N: の行) を
1984 読んで誤りを訂正し、<ref id="completebuild"> に記述されているように
1985 パッケージを完全に再構築してください。
1986 もし W: で始まる行、つまり警告が表示されたら、パッケージを
1987 調整するか、あるいはその警告が間違いであることを確認してください。
1988 (そして Lintian の override ファイルに記載するための設定を
1989 作成してください。この詳細については文書を参照してください。)
1990
1991 <p><prgn/dpkg-buildpackage/ によるパッケージの生成と、
1992 <prgn/lintian/ の実行をすべてひとつのコマンド
1993 <manref name="debuild" section="1"> で行なうこともできます。
1994
1995 <p><manref name="mc" section="1"> などのファイルマネージャを
1996 使ってパッケージの中を見たり、<manref name="dpkg-deb" section="1">
1997 を使ってパッケージの中身を一時的な場所へ取り出したりしてみましょう。
1998 なにかがうまく行かず、妙なものが削除されないまま残されてしまった
1999 場合に備えて、バイナリおよびソースパッケージの両方について不要な
2000 ファイルが余分に含まれたりしていないかどうか、しっかり検査して
2001 ください。
2002 ヒント:「zgrep ^+++ ../gentoo_0.9.12-1.diff.gz」を実行すると、
2003 ソースファイルに対してあなたが行なった変更や追加のリストを
2004 得ることができます。
2005 また `dpkg-deb -c gentoo_0.9.12-1_i386.deb` を実行すると
2006 バイナリパッケージ中のファイルのリストを得ることができます。
2007
2008 <p>自分でパッケージをインストールして試してみましょう。
2009 例えば、<manref name="debi" section="1"> コマンドを root で
2010 実行してみましょう。
2011 自分の環境以外のマシンでも試してみて、パッケージをインストール
2012 する際やプログラムを実行する際に警告やエラーが発生しないか
2013 注意深く観察してみてください。
2014
2015 <chapt id="upload">パッケージをアップロードする
2016
2017 <p>徹底的に新パッケージをテストしたら、これらのファイルを
2018 Debian アーカイブにアップロードする必要があります。
2019 これは手作業で行なってもかまいませんが、
2020 <manref name="dupload" section="1"> や
2021 <manref name="dput" section="1"> のような、あらかじめ
2022 用意されている自動化されたツールを利用したほうがずっと
2023 簡単です。
2024 ここでは <prgn/dupload/ を使う方法について説明します。
2025
2026 <p>まず dupload の設定ファイルを調整しなければいけません。
2027 システム全体の設定ファイルである <file>/etc/dupload.conf</file>
2028 を編集するのでも、あるいはあなた専用の設定ファイルである
2029 <file>~/.dupload.conf</file> を使って変更したい項目だけ
2030 上書きさせるのでも、どちらでもかまいません。
2031 このファイルには以下のような項目を記載します。
2032
2033 <p><example>
2034 package config;
2035
2036 $default_host = "ftp-master";
2037
2038 $cfg{"ftp-master"}{"login"} = "yourdebianusername";
2039
2040 $cfg{"non-us"}{"login"} = "yourdebianusername";
2041
2042 1;
2043 </example>
2044
2045 <p>もちろん、私の個人的な設定の部分はあなたの設定に従って
2046 変更してください。またそれぞれのオプションが持つ意味を理解する
2047 ために <manref name="dupload.conf" section="5"> マニュアルページ
2048 を読んでください。
2049
2050 <p>もっとも気をつけるべき項目は $default_host の選択です。
2051 この項目にはデフォルトとして利用するアップロードキューを指定します。
2052 「ftp-master」がメインのサーバーですが、場合によっては別の、もっと
2053 速い (ネットワーク的に近い) ホストを利用したいこともあるでしょう。
2054 アップロードキューについて、詳しくは開発者レファレンスの
2055 「Uploading a package (パッケージのアップロード)」の節、
2056 <file>/usr/share/doc/developers-reference/developers-reference.html/ch-upload.en.html#s-uploading</file>
2057 を参照してください。
2058
2059 <p>さてそれでは、インターネットプロバイダに接続し、
2060 以下のコマンドを実行してください:
2061
2062 <p><example>
2063 dupload gentoo_0.9.12-1_i386.changes
2064 </example>
2065
2066 <p><prgn/dupload/ は各ファイルの MD5 チェックサムを計算し、
2067 .changes ファイルの中の情報と照合します。
2068 もし一致しない場合にはうまく upload できないため、
2069 <ref id="completebuild"> の説明に従って最初から再構築を
2070 やり直すよう、警告してきます。
2071
2072 <p>「ftp-master」へアップロードするよう指定した場合、
2073 <prgn/dupload/ は Debian マシン上でのあなたのパスワードを
2074 確認し、そしてパッケージを upload します。
2075
2076 <chapt id="update">パッケージの更新
2077
2078 <sect id="newrevision">Debian レビジョンの更新
2079
2080 <p>例えば仮に、#54321 という番号のバグレポートがあなたのパッケージ
2081 に対してファイルされ、解決するべき問題が記述されていたとしましょう。
2082 パッケージの新しい Debian レビジョンを作成するには、以下を実行する
2083 必要があります。
2084
2085 <list>
2086 <item>もちろん、パッケージソース中の問題を修正します。
2087
2088 <item>次に Debian changelog ファイルの先頭に新しいレビジョンを
2089 追加します。例えば「dch -i」を実行するか、またはバージョンを
2090 明示したい場合なら「dch -v &lt;version&gt;-&lt;revision&gt;」
2091 を実行してあなたの好きなエディタで説明を記入すると楽にできます。
2092
2093 <p>ヒント: 指定された形式で日付情報を取得する方法は ?
2094 答: 「822-date」または「date -R」を使いましょう。
2095
2096
2097 <item>changelog の説明行に、このレビジョンで解決されたバグと、
2098 その解決方法についての簡単な説明を記載し、
2099 「Closes: #54321」と続けておきます。
2100 これによってあなたのパッケージが Debian アーカイブ中に受け入れられた時、
2101 アーカイブ管理ソフトウェアによって該当するバグレポート
2102 (今回の場合は #54321) が自動的に閉じられます。
2103
2104 <item>これまで <ref id="completebuild">、<ref id="checkit">、
2105 <ref id="upload"> の中で実行してきたことを再度繰り返します。
2106 今までと違うのは、今回の場合オリジナルソースアーカイブには
2107 変更が無く、同じものが既に Debian アーカイブ中に存在しているため、
2108 upload するファイルにはこのファイルが含まれないという点だけです。
2109 </list>
2110
2111 <sect id="newupstream">上流ソフトウェアの更新 (New upstream release)
2112
2113 <p>さて、ではまた別の、もうすこし複雑な状況を考えてみましょう。
2114 新しい上流のバージョン (new upstream version) がリリースされ、
2115 もちろんあなたはそれをパッケージ化したい、という状況です。
2116 この場合、以下を実行する必要があります。
2117
2118 <list>
2119 <item>新しいソースをダウンロードして (例えば「gentoo-0.9.13.tar.gz」
2120 という名前で) tarball にまとめ、古いソースツリーの上のディレクトリ
2121 (例えば ~/debian/) にそれを置きます。
2122
2123 <item>古いソースディレクトリに移動し、以下を実行:
2124
2125 <example>
2126 uupdate -u gentoo-0.9.13.tar.gz
2127 </example>
2128
2129 もちろん、このファイル名はあなたのプログラムのソースアーカイブ名で
2130 置き換えてください。<manref name="uupdate" section="1"> は tarball
2131 の名前を適切に変更し、以前の .diff.gz ファイルにある変更をすべて
2132 適用して新しい debian/changelog ファイルの内容を更新します。
2133
2134 <item>ディレクトリを新しいパッケージソースツリーである
2135 「../gentoo-0.9.13」に変更し、今まで <ref id="completebuild">、
2136 <ref id="checkit">、<ref id="upload"> の中で
2137 実行してきたことを再度繰り返します。
2138 </list>
2139
2140 <p>もし「debian/watch」ファイルを <ref id="watch"> で
2141 説明したように設定していれば、
2142 <manref name="uscan" section="1">
2143 を実行して、改訂されたソースを探し、ダウンロードし、
2144 <prgn/uupdate/ を実行、という一連の手順を (魔法のように)
2145 自動的に行なわせることができます。
2146
2147 <sect id="upgrading">Verifying package upgrades
2148
2149 <p>パッケージの新しいバージョンを構築したら、
2150 (それが New Debian revision でも New upstream release でも)
2151 古いパッケージから安全にアップグレードできることを
2152 検証するために、以下を実行してください。
2153
2154 <list>
2155 <item>旧バージョンからアップグレードする
2156 <item>再び旧バージョンにダウングレードして、削除する
2157 <item>新パッケージとしてインストールする
2158 <item>いったん削除して、またインストールする
2159 <item>完全削除する
2160 </list>
2161
2162 <p>もしあなたのパッケージが過去にリリースされたバージョンの
2163 Debian に含まれていた場合には、多くの人々が Debian の最新の
2164 リリース版に含まれていたバージョンのパッケージから
2165 アップグレードしてくるだろうということを覚えておいてください。
2166 そして、そのバージョンからもきちんとアップグレードできることを
2167 忘れずに上記の手順で確認しておいてください。
2168
2169 <chapt id="helpme">相談するには
2170
2171 <p>公共の場で質問する前に、まずはマニュアルを読みましょう。
2172 ここでいうマニュアルには、例えば <file>/usr/share/doc/dpkg</file>、
2173 <file>/usr/share/doc/debian</file>、<file>/usr/share/doc/package/*</file>
2174 といったディレクトリに含まれる文書や、この文書で言及されたプログラムに
2175 関する man/info ページなどが含まれます。
2176
2177 <p>もしパッケージ化の作業について疑問があり、文書を読んでも
2178 その答を見つけられない時には、Debian Mentors メーリングリスト
2179 <email/debian-mentors@lists.debian.org/
2180 で相談してみましょう。そこには喜んであなたを援助してくれる
2181 経験豊富な Debian 開発者が待っています。ただし、質問する前に
2182 あらかじめ関連する文書を (すくなくとも上に挙げたものくらいは)
2183 きちんと読んでおきましょう!
2184
2185 <p>Debian Mentors メーリングリストについて、詳しくは
2186 <url id="http://lists.debian.org/debian-mentors/">
2187 を御覧ください。
2188
2189 <p>もしあなたがバグレポート (そう、ホンモノのバグレポートです!)
2190 を受け取ったら、それはあなたが
2191 <url name="Debian バグ追跡システム" id="http://www.debian.org/Bugs/">
2192 をじっくり調べて、そこにある文書を読み、バグレポートに効率よく
2193 対処する方法を知る時が来たということです。その時がきたら、
2194 開発者レファレンスの「Handling Bugs (バグの扱い)」という節、
2195 <file>/usr/share/doc/developers-reference/developers-reference.html/ch-bug-handling.en.html</file>
2196 を調べることを、強くお勧めしておきます。
2197
2198
2199 <p>それでもまだ質問があるのなら、Debian Developers メーリングリスト
2200 <email/debian-devel@lists.debian.org/ で尋ねてみるとよいでしょう。
2201 このメーリングリストへの参加方法など、詳しくは
2202 <url id="http://lists.debian.org/debian-devel/">
2203 を御覧ください。
2204
2205 <p>((訳注: 日本では、Debian JP Project が主催する Debian JP 開発者
2206 メーリングリスト <email/debian-devel@debian.or.jp/に参加して質問して
2207 みても良いでしょう。
2208 詳しくは
2209 <url name="Debian JP メーリングリスト" id="http://www.debian.or.jp/MailingList.html">
2210 を参照してください。))
2211
2212 <p>万事うまく行ったとしても、神様にお祈りを忘れずに。
2213 なんでかって?考えても見てください、ほんの数時間の内に (あるいは
2214 数日かかるかも知れませんが) 世界中のユーザがあなたのパッケージを
2215 使うようになるのです。
2216 そしてもしあなたがとんでもないヘマをしでかしていたら、きっと数知れぬ
2217 怒れる Debian ユーザからメール爆撃を食らうはめになるでしょう…
2218 まあ冗談ですけど :-)
2219
2220 <p>楽に構えて、バグ報告に対応する準備をしましょう。
2221 それに、Debian ポリシーに完全に沿うようにするまでには
2222 まだまだやるべきことがいっぱい残っています。
2223 (もう一度言いますが、<em>ちゃんとした文書</em> を読んで勉強しましょう)。
2224 好運を祈ります!
2225 </book>
2226
2227 </debiandoc>

  ViewVC Help
Powered by ViewVC 1.1.5