[% title = "Debian Packaging Manual - ソースパッケージ" %]
[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ next ]
Debian バイナリパッケージは Debian ソースから生成されます。 Debian ソースはバイナリパッケージを簡単に、かつ自動的に 構築しやすいように特殊な形式になっています。
以前のバージョンの Debian ソースの形式は廃止されました。 古い形式のパッケージの変換についての説明は Debian policy manual にあります。
ソースパッケージを扱うために様々なツールが提供されています。 これらはソースをパックやアンパックしたり、 バイナリパッケージの構築や新しいバージョンの ディストリビューションを扱うのを手助けしたりします。
ここではこれらのツールの紹介と典型的な用途を説明します。
引数や動作についての完全な文書は dpkg-source(1)
を見て下さい。
Debian ソースパッケージをどうやって作るかの例と、 Debian
ソースパッケージからどの様にこれらのユーティリティを
使うかについては、例題パッケージである hello
を見て下さい。
dpkg-source
- Debian ソースパッケージの パックとアンパック
このプログラムは手動でよく使われます。また、 dpkg-buildpackage
の様なパッケージに 依存しない自動構築スクリプトからも呼び出されます。
パッケージをアンパックするには次のようにコマンドを 実行します。
dpkg-source -x .../path/to/filename.dsc
この時、filename.tar.gz と (もし存在するなら)filename.diff.gz は 同じディレクトリに置いておきます。 これにより package-version ディレクトリにソースをアンパックし、もし存在するなら package-version.orig をカレントディレクトリにアンパックします。
パックされたソースアーカイブを作るには次のように コマンドを実行します。
dpkg-source -b package-version
これにより、.dsc、.tar.gz と
(もし必要なら).diff.gz がカレントディレクトリに
作られます。dpkg-source
は最初に ソースツリーに clean
を行いません。 必要な場合は別にやっておく必要があります。
アーカイブとしてのソースファイル, Section 3.3 も見て下さい。
dpkg-buildpackage
- 全体的なパッケージ構築の 制御スクリプト
dpkg-buildpackage
は、
dpkg-source
、debian/rules
を順に呼びだします。debian/rules のターゲットは 順に
clean
、build
、 binary
です。最後に
dpkg-buildpackage
は、 dpkg-genchanges
と
PGP
を 呼び出し、署名済のソースパッケージおよび
バイナリパッケージを作成、アップロードします。
このコマンドは、通常、すでに構築されている、あるいは 構築されていないソースディレクトリのトップレベルで、 手動で実行します。引数なしで呼び出しても構いません。 よく使う引数は次の通りです。
それぞれ、.changes ファイル、ソース パッケージの .dsc ファイルに PGP サインを しないという指示です。
pgp-command を PATH
で 見つかる pgp
の代わりに呼び出します。 pgp-command は pgp
と全く同じ
動作をしなくてはなりません。
root 特権が必要な時、root-command という
コマンドを呼び出します。root-command は
第1引数をコマンドとして、必要ならば PATH
から呼び出し、第2引数以降を 呼び出したコマンドに渡さなければいけません。
root-command が与えられなかった場合は、 dpkg-buildpackage
は root 特権を 得るための特別な動作をしません。そのため、
ほどんどのパッケージでは dpkg-buildpackage を root として
実行しなければなりません。
2種類の、バイナリのみの構築とアップロード - dpkg-source(1)
を
見て下さい。
dpkg-gencontrol
- バイナリパッケージ 制御ファイルの生成このプログラムは通常ソースツリーのトップレベルで debian/rules (Debian 化されたソースツリー, Section 3.2 を見て下さい。) から呼び出されます。
これは通常、パッケージが構築されている一時的な
ディレクトリツリー中のファイルやディレクトリの許可属性や
所有権を設定したあと、パッケージが dpkg-deb
を用いて構築される直前に行なわれます [5]。
dpkg-gencontrol
は、パッケージに入るファイルが
一時的な構築ディレクトリの中に全て置かれた後で
呼ばれなければなりません。パッケージがインストールされた時の
サイズの計算を正確にするためです。
また、dpkg-gencontrol
は dpkg-shlibdeps
の後で実行する必要があります。 debian/substvars 中で
dpkg-shlibdeps
によって作られた 変数置換(variable
substitutions)を利用できるように するためです。
ソースパッケージのトップから相対パスで debian/tmp
にあるファイルからバイナリパッケージを一つだけ作成する
場合は、通常、dpkg-gencontrol
を呼び出せば 十分です。
複数のバイナリを構築するソースでは、一般に次の様にする 必要があります。
dpkg-gencontrol -Pdebian/tmp-pkg -ppackage
-P は dpkg-gencontrol
に
パッケージをデフォルト以外のどのディレクトリで構築するかを
伝え、-p はどのパッケージの
制御ファイルを生成するべきかを伝えます。
dpkg-gencontrol
は(例えば) dpkg-genchanges
を将来呼び出すために debian/files 中のファイルのリストに
情報を加えることもします。
dpkg-shlibdeps
- 共有ライブラリの依存関係の算定
通常、このプログラムは dpkg-gencontrol
(Debian 化されたソースツリー, Section 3.2 を参照)
の直前に、ソースツリーのトップレベルで debian/rules
から呼ばれます。
このプログラムの引数は、バイナリパッケージの制御ファイルに 共有ライブラリの依存関係を含める必要のある実行形式 [6] です。
検索された共有ライブラリが Recommends や Suggests のみを保証すべき場合や、 Pre-Depends を保証すべき場合は、 それらの実行形式の前に -ddependency-field オプションをつけてこれを指示しなければなりません。 (各 -d オプションは 次の -d が 現れるまで有効です。)
dpkg-shlibdeps
は出力される制御ファイルを
直接修正することはしません。 代わりに、デフォルトでは
shlibs:Depends の様な 変数の設定を debian/substvars
というファイルに 加えます。ソース制御ファイルにはバイナリパッケージ毎に
セクションがありますが、これらの変数の設定は適切な
セクションの依存関係フィールドから参照しなければなりません。
例えば、procps
パッケージは2種類のバイナリを
生成します。predependency の必要な ps
の様な 単純な C
バイナリと、recomendation のみが必要な top
の様なフルスクリーンの
ncurses バイナリです。これは debian/rules 内で 次のように書けます:
dpkg-shlibdeps -dPre-Depends ps -dRecommends top
そしてメイン制御ファイル debian/control で 次のように書けます:
... Package: procps Pre-Depends: ${shlibs:Pre-Depends} Recommends: ${shlibs:Recommends} ...
あるソースが提供する(複数の)バイナリパッケージが
共有ライブラリに対して異なった依存要求を持つ場合は、
-pvarnameprefix オプションを
利用することが出来ます。このオプションはデフォルトの shlib:
プレフィックスを上書きします (このオプションを設定する毎に
dpkg-shlibdeps
を一回実行)。よって、
varnameprefix:dependencyfield
という形式で依存変数の集合を幾つか作ることが出来ます。
これはバイナリパッケージ制御ファイルの適切な部分で 参照されます。
dpkg-distaddfile
- debian/files へのファイルの追加幾つかのパッケージのアップロードではソースパッケージ やバイナリパッケージ以外のファイルを含める必要が あります。
dpkg-distaddfile
は debian/files に
ファイルを加えます。dpkg-genchanges
が 実行されたときに
.changes にそのファイルが 含まれるようにする為です。
これは通常、debian/rules の binary
ターゲットで呼び出されます:
dpkg-distaddfile filename section priority
filename は dpkg-genchanges
が
そのファイルを見つけると思われるようなディレクトリ -
これは通常ソースツリーのトップレベルの上のディレクトリ -
に対する相対ファイル名です。debian/rules の ターゲットは
dpkg-distaddfile
が呼ばれる直前か
直後にそのファイルをその場所に置かねばなりません。
section と priority は、生成される .changes ファイルに変更されずに渡されます。 Section と Priority, Section 4.2.9 を見て下さい。
dpkg-genchanges
- アップロード制御ファイル .changes の生成
通常、このプログラムはパッケージに依存しない dpkg-buildpackage
の様な自動構築スクリプトから 呼び出されますが、手動で呼びだすこともあります。
このプログラムは通常、構築されたソースツリーの トップレベルで呼び出されます。引数をつけずに 呼び出した場合は、ソースパッケージの変更履歴ファイル、 制御ファイルの情報と、構築されているバイナリパッケージ、 ソースパッケージの情報に基づいて、簡単な .changes ファイルを書きだします。
dpkg-parsechangelog
- changelog の解析結果の生成
このプログラムは dpkg-source
によって内部的に 用いられます。時折
debian/rules や他の場所で 使われるかもしれません。変更履歴
(デフォルトでは debian/changelog) を解析し、そこに含まれる情報を
制御ファイル形式の表現で標準出力に出力します。
dpkg-architecture
- パッケージを構築するシステム、あるいはホストシステムに ついての情報このプログラムは手動で使用することもできますが、 dpkg-buildpackage や debian/rules に よっても起動されます。そこでは、パッケージを構築するマシンの アーキテクチャ、あるいはホストのアーキテクチャを示す 環境変数や make 変数を設定します。これらの変数は、 パッケージ構築過程において必要なものです。
以降で述べるソースアーカイブの構成は、関連した制御情報をもつ Debian 化されたソースツリーが容易に再現され輸送されるように することを意図したものになっています。Debian 化された ソースツリーは、オリジナルのプログラムに Debian 化の 工程の為のファイルを付け、残りのソースコードと インストールスクリプトに必要な変更を加えたものです。
Debian のために作られた特別なファイルは、 Debian 化されたソースツリーのトップレベルの debian ディレクトリに置かれます。
このファイルは実行可能な makefile で、ソースから パッケージをコンパイルしバイナリパッケージを構築するための パッケージ特有のレシピを含んでいます。
このファイルの先頭は #!/usr/bin/make -f という 行でなければなりません。make を明示的に実行するのではなく、 debian/rules という名前で実行できるように する為です。
対話型の debian/rules スクリプトは、
そのパッケージの自動コンパイルを不可能にし、さらに、
メンテナー以外の人が同じバイナリパッケージを
再構築するのを難しくします。ですから、全ての 必要なターゲット
は非対話的で なくてはなりません。最小限の範囲で言えば、
必要なターゲットとは、dpkg-buildpackage
によって呼び出されるターゲット、つまり clean、
binary、binary-arch、build の
ことです。また、これらのターゲットによって呼び出される
ターゲットも非対話的でなくてはなりません。
必要なターゲットは次の通りです。
パッケージの構築、すなわち全てのパッケージの 非対話的な設定とコンパイルを行ないます。 もしパッケージに構築前の設定作業がある場合は、 Debian 化されたソースパッケージは設定作業を 行なった後で構築しなければなりません。これは、 設定を再びせずに構築出来るようにするためです。
いくつかのパッケージで、同一のソースツリーから
それぞれ違う二つのバイナリパッケージを生成する場合が
あります。build
ターゲットは、
そういう場合には対応できません。これらの場合は、
それぞれの構築方法にしたがって、2 つまたは それ以上のターゲット
(build-a と build-b やその他)
を使用するのがよいでしょう。 そしてこの場合、単独の build
は
なにも実行しません。binary
ターゲットで、これらの可能な方法でパッケージを
作成して、それぞれに対応したバイナリパッケージを 生成することになります。
ルート権限が必要なことを build
ターゲットで実行してはいけません。
また、build
ターゲットの前には、 clean
を走らせなければならないでしょう。
パッケージの設定ルーチンに長い時間がかかる時や、 makefile
があまりよく設計されていない時、 build
の前に clean
が 必要な時、構築プロセスの終了時に touch build
を実行するのがよいでしょう。これによって、 debian/rules build
が再度実行されたときに、 プログラム全体を再構築しなくてすみます。
binary
ターゲットは、ユーザにとって
バイナリパッケージを構築するときに必要な唯一の
ものでなければいけません。全てのこれらのターゲットは、
非対話的でなければなりません。binary
ターゲットは、二つの部分に分けられます: binary-arch
は、特定のアーキテクチャ用の ファイル、binary-indep
は、
そうでないものを生成します。
通常、binary
は、余分なコマンドを 必要とせず、単純に
binary-arch
と binary-indep
に依存するターゲットで
なければいけません。
両方の binary-*
ターゲットは、 build
ターゲットに依存しなければ いけません。このようにしておけば、もしパッケージ
構築処理が済んでいないときは構築処理が実施されます。
そして次に関連したバイナリパッケージを 生成しなければいけません。この時、
dpkg-gencontrol
を使って 制御ファイルを作成し、
dpkg-deb
を使って構築し、それらを
トップのディレクトリの上に置きます。
binary-*
のうちの一つがなにもしない
場合(アーキテクチャ依存、非依存に関わらずソースから
一つのバイナリパッケージしか生成しない場合) においても、なにもしない側の
binary-*
が存在しなければなりませんし、処理が成功したという
あつかいとしなければなりません。
バイナリパッケージ, Chapter 2 に、どのようにして バイナリパッケージを構築するかについて 書かれています。
binary
ターゲットは、ルートで 起動されなければいけません。
build
と binary
ターゲットによる実行結果を元に戻します。ただし、 binary
の実行による親ディレクトリへ 生成された出力ファイルはそのまま残します。
このターゲットは、非対話的である必要があります。
build
されたファイルが、
上で述べたように、build
ターゲットの 最後に touch
されていた場合、そのファイルは、 clean
の最初の作業として
削除しなければいけません。中断された clean
の後に
build
が 実行された場合、すべてが終了したと認識されて
しまいかねないからです。
build
がルートで起動されてから、または binary
が起動された後には、 clean
ターゲットはルートで
起動されなければいけません (例えば、build
はディレクトリを
作成することもあるからです)。
主要なアーカイブサイトから最新版の オリジナルソースパッケージを取得します (FTP や WWW 経由)。以下に述べるように、オリジナルの ソースの tar ファイル形式に再構成し、 現在のディレクトリに置きます。
このターゲットは、どのディレクトリからも実行できます。 一時ファイルを残している場合がありますので、 その時は削除してください。
このターゲットはオプションです。 しかしつけた方がよいでしょう。
build
と binary
、 clean
ターゲットはパッケージの トップディレクトリをカレントディレクトリとして
実行されなければいけません。
debian/rules に他のターゲットがあることもあります。 これらは、公開されている、またはいないインターフェースや、 パッケージ内部で使用されるものです。
パッケージを実際に構築するマシンや、インストールの対象となる
マシンのアーキテクチュアは、dpkg-architecture を通して
変数を設定することによって決定されます (dpkg-architecture
-
パッケージを構築するシステム、あるいはホストシステムに ついての情報, Section
3.1.8 を見て下さい)。これにより、ホストマシンだけでなく
パッケージの構築をするマシンの Debian アーキテクチュアと GNU
型のアーキテクチュア指定文字列を得ることができます。 以下に、サポートされている
make 変数を示します。
DEB_*_ARCH (Debian アーキテクチュア)
DEB_*_GNU_TYPE (GNU 型アーキテクチュア 指定文字列)
DEB_*_GNU_CPU (DEB_*_GNU_TYPE の CPU の部分)
DEB_*_GNU_SYSTEM (DEB_*_GNU_TYPE の システムの部分)
* は BUILD か HOST のどちらかです。 BUILD の場合はパッケージを構築するマシンの 指定になり、HOST の場合にはインストールされる マシンの指定になります。
rules ファイル中で適当なデフォルト値を設定することに よって、後方互換性を保つことができます。 詳しくは dpkg-architecture のドキュメントを参照して下さい。
DEB_*_ARCH は、マシンの Debian アーキテクチュア のみ決定するということは、重要です。CPU や システムの 情報を得るのに DEB_*_ARCH を使ってはいけません。 その場合には GNU 型変数を使わなくてはいけません。
ソースパッケージとそれから生成される バイナリパッケージについてのバージョン非依存の詳細を 含みます。
それは、制御フィールドのセットが連続したものです。 その書式はバイナリパッケージ制御ファイルに 似ています。フィールドのセットは、一つ以上のブランクで 区切られます。そして、最初のセットは、ソースパッケージに ついての全般的な情報です; それに続くセットには、ソースの ツリーがバイナリパッケージを生成する方法について 書かれています。
フィールドの書式とその意味するところについては、 制御ファイルとそのフィールド, Chapter 4 をご覧ください。
一般的な、(バイナリパッケージ非依存) フィールド:
Source (必須)
Section と Priority (分類用、必須)
Build-Depends その他 (ソースパッケージの相互関連)
バイナリパッケージごとのフィールド:
Package (必須)
Architecture (必須)
Section と Priority (分類用)
Depends その他 (バイナリパッケージ間の関連性)
これらのフィールドは、dpkg-gencontrol
が
バイナリパッケージ用の制御ファイルを 生成するとき(以下参照)や
dpkg-genchanges
が アップロードに付随する .changes
を生成するとき、 dpkg-source
がソースのアーカイブの一部として
.dsc ソース制御ファイルを生成するときに、 使用されます。
また、これらのフィールドは、変数参照を含むこともあります。 -
それらの値は、出力制御ファイルを 生成するときに dpkg-gencontrol
や
dpkg-genchanges
、dpkg-source
に
よって使用されます。詳細は、 debian/substvars と変数の置換, Section
3.2.4 をご覧ください。
ソースパッケージ制御ファイルには ユーザ定義フィールドを追加することができます。 これらは無視され、バイナリや ソースパッケージ制御ファイル、 アップロード制御ファイルにはコピーされません。
出力ファイルにサポートされていないフィールドを 付加したいときは、ここに述べる方法を使用してください。
メインのソース制御ファイルにおいて、 X から始まり、BCS とハイフン - が続くフィールドは、出力ファイルにコピーされます。 そして出力ファイルには、ハイフンの後に続く キャラクタのみが、フィールド名として使用されます。 ここで、B は、 バイナリパッケージ制御ファイルに 使用されるとき、S は、 ソースパッケージ制御ファイルに使用されるとき、 C は、アップロード制御 (.changes) ファイルに使用されるときに使われます。
メインのソース情報制御ファイルが以下の フィールドを含んでいるときは、
XBS-Comment: I stand between the candle and the star.
バイナリとソースパッケージ制御ファイルは、次の フィールドを含みます。
Comment: I stand between the candle and the star.
このファイルは、パッケージの Debian 特有の部分の変更を記録します [7]。
このファイルは特別な書式を持っています。これは、 どのパッケージのバージョンが現在構築中なのか、また、 その他のリリース特有の情報を、パッケージ構築ツールが 認識するためです。
その書式を以下に示します。:
package (version) distribution(s); urgency=urgency * change details more change details * even more change details -- maintainer name and email address date
package と version は ソースパッケージの名前とバージョンです。
distribution(s) には、このバージョンが アップロードされるときにインストールされる ディストリビューションがリストされます - これらは、 .changes ファイルの Distribution フィールド にコピーされます。 Distribution, Section 4.2.14 をご覧ください。
urgency は、アップロード用の .changes ファイルの
Urgency フィールドの値です。 Urgency, Section
4.2.15 をご覧ください。コンマを含む フィールドを使用することはできません;
dpkg
の changelog 書式において、コンマは
keyword=value セットを
分離するために使用されています (しかしながら、 現在のところ
urgencyとして有効な keywordは一つだけです)。
詳細な変更点は、実際には最低二つのスペースではじまる 一連の行に記されます。しかしながら、伝統的に、 それぞれの変更箇所はアスタリスクで始まり、文章との間を 空けるためにスペースが続きます。継続行は、 インデントされます。望むのであれば、変更箇所グループを 分離するのに空行が使用できます。
管理者の名前と電子メールアドレスは必ずしも通常の パッケージ管理者である必要はありません。 それらはこのバージョンを作成した人について記されて いなければいけません。この情報は、.changes ファイルにコピーされ、その後アップロードの完了時に通知が 送られることとなります。
date は RFC822 フォーマットでなければなりません [8]。; それらは、数字によって表現された タイムゾーンを必ず含んでおり、オプションとしてコメントの 形でタイムゾーン名かその省略形を付加することができます。
パッケージ名ではじまる最初の `タイトル' の行は、左詰めに しなければいけません。それに続く管理者、日付フィールドの 詳細は正確に一つのスペースによって はじまらなければいけません。管理者と日付フィールドの 詳細は、正確に2つのスペースによって区切られていなければ いけません。
この書式を編集するための debian-changelog-mode と 呼ばれている Emacs モードがあります。changelog の最後に 変数節を付加することで、編集時に自動的にこのモードを 選択するようにすることができます。
使用したい書式のパーサを用意することで、標準的でない 書式を使用することが可能です。
dpkg-parsechangelog にそのパーサを 実行させるためには、そのファイルの最後の 40 行のある行を Perl の正規表現でマッチさせなければいけません: \schangelog-format:\s+([0-9a-z]+)\W 括弧内はフォーマット名でなければいけません。例えば、 以下のようなものです。
@@@ changelog-format: joebloggs @@@
changelog 書式名は空文字でない数字の文字列となります。
もしそのような行があった場合、 dpkg-parsechangelog は、 /usr/lib/dpkg/parsechangelog/format-name か、 /usr/local/lib/dpkg/parsechangelog/format-name にパーサを探しにいきます。それが見つからない場合や 実行形式のプログラムでなかった場合はエラーになります。 デフォルトの changelog 書式は dpkg になっていて、 そのパーサは dpkg によって提供されています。
パーサはファイルの最初に changelog が標準入力で オープンされた時に実行されます。そして、必要な情報を 決定するためにファイルを読みこみ (場合によってはファイルを探しもします)、 標準的な書式で一連の制御フィールドを標準出力に パース出力します。デフォルトでは changelog 中に 記載されている最新のバージョンのみの情報を 出力しなければいけません。; -vversion オプションによって、正確に そのバージョン以降のすべての変更情報を出力しなければ いけません。この場合、changelog に version が 存在していなかったら、エラーにしなければいけません。
利用可能なフィールドを以下に示します。
Version (必須)
Distribution (必須)
Urgency (必須)
Maintainer (必須)
Changes (必須)
(-v の使用によって) いくつかのバージョンに 関する値が返されたとき、urgency の値は、すべての バージョンの中で一番高い urgency の値になります。 maintainer と version、distribution、date は常に 最新のバージョンのものとなります。
Changes フィールドの書式については、 Changes, Section 4.2.18 をご覧ください。
パースされた changelog フォーマットがすべて、または ほとんどすべてのそれぞれの change 項目間の空行が 残されているときは、出力結果をコンパクトにするために、 それらの空行は削除されなければいけません。
changelog フォーマットが日付やパッケージ名に関する情報を 含んでいないときは、これらの情報は出力から 削除されなければなりません。パーサはそれらの情報を 調合してはいけません。または、他のソースからそれらの 情報を見つけてきてはいけません。
changelog 中の書式が、予期されるものではないときは、 混乱したままパースを試みて、多分に不正確な出力を 生成するよりは、非ゼロの終了状態で終了しなければ いけません。
changelog パーサはユーザとの対話的処理を一切行っては なりません。
dpkg-gencontrol
と dpkg-genchanges
、
dpkg-source
が制御ファイルを生成するとき、
出力に書きこむ前に変数置換を行います。変数置換の形式は
以下の通りです。${variable-name} オプションファイルの
debian/substvars が、 変数置換に用いられる変数を含んでいます;
これらの変数は、 ソースをパッケージするコマンドに -V オプションを
指定することで、直接 debian/rules から設定することも
できます。この場合、確実に先行定義されている変数が 使用できるようになります。
これらは debian/rules ターゲットによって生成され、
動的に変更されます; この場合は clean
ターゲットによって削除されなければいけません。
debian/substvars の書式を含んだソースの変数置換の
詳細については、dpkg-source(1)
をご覧ください。
このファイルは、ソースツリーの恒常的な部分ではありません。;
パッケージを構築する途中、どのファイルが生成されたのかを
記録するのに用いられます。dpkg-genchanges
が、
.changes ファイルを生成するときにこれを用います。
これらはソースパッケージのアップロード版に含まれていては
いけません。そして、それら (およびすべてのバックアップファイルと一時ファイル、
例えば、files.new [9])
は、clean
ターゲットによって
削除されなければいけません。また、binary
ターゲットのスタート時には、これらのファイルは、
削除されるか空にして新しいスタートを確認することは よいやり方です。
dpkg-gencontrol
は、.deb ファイル用の
エントリを追加します。.deb ファイルは、これが
作成する制御ファイルを使って、dpkg-deb
によって生成されます。たいていのパッケージが、この
ファイルに関してやらなければいけないことは、 clean
ターゲットによって削除される ことだけです。
アップロードされたパッケージが、ソースパッケージとすべての
バイナリパッケージ、dpkg-gencontrol
によって
生成されたそれらの制御ファイル以外のファイルを
含んでいるときは、それらのファイルはパッケージの
トップ階層ディレクトリの親ディレクトリに 置かれなければいけません。そして、
debian/files のリストにファイルを 追加するために
dpkg-distaddfile
が 呼ばれなければいけません。
binary
ターゲットによってバイナリパッケージを
構築する際に標準的に使用される一時的ディレクトリです。
パッケージ構築の際は、tmp ディレクトリが
ファイルシステムツリーのルートになります。 (例えば、パッケージに付属する
makefile の install ターゲットを使用するときや、出力をリダイレクトする
場合です)。また、DEBIAN サブディレクトリを 含みます。パッケージファイルの作成 -
dpkg-deb
, Section 2.1 をご覧ください。
同じソースツリーから複数のバイナリパッケージが生成される ときは、通常、複数の debian/tmpsomething ディレクトリを使用します。例えば、tmp-a や tmp-doc といった具合です。
binary
によって、どんな tmp
ディレクトリが作成されたとしても、もちろん、 clean
ターゲットによって削除されなければ いけません。
FTP サイトにおいてある様に、Debian ソースパッケージは 3つの関連したファイルから成ります。これら3つのファイルは、 正しいバージョンのものを入手しないと利用することが出来ません。
このファイルは一連のフィールドを含んでいて、 各フィールドはバイナリパッケージの制御ファイルと 同様に識別され分離されています。それぞれのフィールドの 構文は 制御ファイルとそのフィールド, Chapter 4 で述べられています。
Build-Depends その他 (ソースパッケージの相互関連)
ソースパッケージ制御ファイルは、ソースアーカイブ
構築時にソースパッケージの他のファイルから dpkg-source
によって作られます。 ソースパッケージのアンパック時には、ソースアーカイブの
他の2つの部分に含まれるファイルやディレクトリとの チェックが行なわれます。
このファイルは、プログラムの上流の作者からの ソースコードを含む
tar
ファイル (gzip -9 されている)です。 この tar
ファイルは package-upstream-version.orig
というディレクトリ以下に展開されます。
それ以外の場所に展開されるようなファイルは 入っていません。
このファイルは、オリジナルソースを Debian ソースに 変換するのに必要な変更を行なうための unified context diff (diff -u) です。 プレインファイルの編集や作成といった変更のみを 含むことが出来ます。ファイルのパーミッション、 シンボリックリンク先、特殊ファイルやパイプの 特性の変更は出来ません。またファイルの移動や 名前変更も出来ません。
diff に含まれるディレクトリは、ソースツリーのトップに ある debian
ディレクトリ以外は前もって 存在していないといけません。debian
ディレクトリは、アンパック時に必要な場合は dpkg-source
によって作られます。
dpkg-source
は debian/rules
という実行ファイルを自動的に作ります (下を参照)。
オリジナルのソースコードがない場合 - 例えば、パッケージが Debian のために特別に用意されたものだったり、 Debian maintainer が上流の maintainer でもある場合 - は、 構成が少し違います。diff ファイルは無く、tar ファイルは package_version.tar.gz という名前で package-version というディレクトリを含むものになります。
dpkg-source
を使わない Debian ソースパッケージのアンパックDebian ソースパッケージのアンパックには dpkg-source -x がお勧めです。しかし、それが 出来ない場合には次のような方法でアンパック出来ます。
tar ファイルを展開し、.orig ディレクトリを 作ります。
.orig ディレクトリの名前を package-version に 変えます。
debian ディレクトリをソースツリーのトップに 作ります。
diff を patch -p0 として適用します。
Debian 化されたバージョンと一緒にオリジナルの ソースコードも欲しい場合は、tar ファイルをもう一度 展開します。
dpkg-source
を使わずに正当な Debian
ソースアーカイブを作ることは出来ません。特に、 .diff.gz
ファイルを作るのに diff
を
直接使おうとしてもうまくいかないでしょう。
ソースパッケージには、ハードリンク [10] [11]、 デバイスファイル、ソケットファイル、及び setuid や setgid されたファイルが含まれていてはいけません。 [12]
ソースパッケージングツールは diff
と patch
を用いてオリジナルのソースと Debian 化されたソースの間の変更を処理します。
.orig.tar.gz に含まれたオリジナルのソースツリーを Debian
化されたソースにするのに、これらのツールで
処理出来ないような変更を伴ってはいけません。 ソースパッケージを構築する時に
dpkg-source
が
エラーで停止してしまうような問題のある変更は次の通りです。
シンボリックリンク、ソケット、パイプの追加や削除。
シンボリックリンク先の変更。
debian ディレクトリ以外の ディレクトリの作成。
バイナリファイルの内容に対する変更。
ソースパッケージを構築する時に、dpkg-source
が
警告を表示し、処理は継続するような問題のある変更は次の 通りです。
ファイル、ディレクトリ、シンボリックリンクの削除。 [13]
通常の最後の改行が (オリジナル及び修正版のどちらの ソースツリーにも) ない変更されたテキストファイル。
指摘されないが、dpkg-source
によって
検出されない変更は次の通りです。
(debian/rules 以外の)ファイルや ディレクトリのパーミッションの変更。
debian ディレクトリと debian/rules は
dpkg-source
によって別々に処理されます - 変更を行なう前に
debian ディレクトリを作成し、 その後 debian/rules
を誰もが実行できるように します。
[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ next ]
Debian Packaging Manual
version revision 1.13, 2000-08-22ijackson@gnu.ai.mit.edu
bweaver@debian.org
schwarz@debian.org
srivasta@debian.org
J.D.Gilbey@qmw.ac.uk
debian-policy@lists.debian.org
shayase@tky3.3web.ne.jp
debian-doc@debian.or.jp