Debian JP Project

(for vocal browsers: toc, main)

Google
WWW 全体 www.debian.or.jp 検索


[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ next ]


Debian ポリシーマニュアル
Appendix C - ソースパッケージ (旧 Packaging Manual より)


Debian バイナリパッケージは Debian ソースから生成されます。 Debian ソースはバイナリパッケージを簡単に、かつ自動的に構築しやすいように特殊な形式になっています。


C.1 ソースパッケージを処理するためのツール

ソースパッケージを扱うために様々なツールが提供されています。 これらはソースをパックやアンパックしたり、バイナリパッケージの構築や新しいバージョンのディストリビューションを扱うのを手助けしたりします。

ここではこれらのツールの紹介と典型的な用途を説明します。 引数や動作についての完全な文書は dpkg-source(1) を見て下さい。

Debian ソースパッケージをどうやって作るかの例と、 Debian ソースパッケージからどの様にこれらのユーティリティを使うかについては、例題パッケージである hello を見て下さい。


C.1.1 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 を行ないません。必要な場合は別にやっておく必要があります。

Source packages as archives, Section C.3 も見て下さい。


C.1.2 dpkg-buildpackage - 全体的なパッケージ構築の制御スクリプト

dpkg-buildpackage(1) マニュアルページを参照ください。


C.1.3 dpkg-gencontrol - バイナリパッケージコントロールファイルの生成

このプログラムは通常ソースツリーのトップレベルで debian/rules (Debian パッケージソースツリー, Section C.2を見て下さい) から呼び出されます。

これは通常、パッケージが構築されている一時的なディレクトリツリー中のファイルやディレクトリの許可属性や所有権を設定したあと、パッケージが dpkg-deb を用いて構築される直前に [124] 行なわれます

dpkg-gencontrol は、パッケージに入るファイルが一時的な構築ディレクトリの中に全て置かれた後で呼ばれなければなりません。 パッケージがインストールされた時のサイズの計算を正確にするためです。

また、dpkg-gencontroldpkg-shlibdeps の後で実行する必要があります。debian/substvars 中で dpkg-shlibdeps が行った 変数置換 (variable substitutions) を反映できるようにするためです。

ソースパッケージのトップから相対パスで debian/tmp にあるファイルからバイナリパッケージを一つだけ作成する場合は、通常 dpkg-gencontrol を呼び出せば十分です。

複数のバイナリを構築するソースでは、一般に次のようにする必要があります。

       dpkg-gencontrol -Pdebian/tmp-pkg -ppackage

-Pdpkg-gencontrol にパッケージをデフォルト以外のどのディレクトリで構築するかを伝え、 -p はどのパッケージのコントロールファイルを生成するべきかを伝えます。

dpkg-gencontrol は (例えば) dpkg-genchanges を将来呼び出すときのために debian/files 中のファイルのリストに情報を加えることも行います。


C.1.4 dpkg-shlibdeps - 共有ライブラリの依存関係の算定

dpkg-shlibdeps(1) を参照ください。


C.1.5 dpkg-distaddfile - debian/files へのファイルの追加

幾つかのパッケージのアップロードではソースパッケージやバイナリパッケージ以外のファイルを含める必要があります。

dpkg-distaddfiledebian/files ファイルにファイル記述を加えます。 dpkg-genchanges が実行されたときに .changes にそのファイルが含まれるようにする為です。

これは通常、debian/rulesbinary ターゲットで呼び出されます:

       dpkg-distaddfile filename section priority

filenamedpkg-genchanges がそのファイルを見つけると思われるようなディレクトリ - これは通常ソースツリーのトップレベルの上のディレクトリ - に対する相対ファイル名です。debian/rules のターゲットは dpkg-distaddfile が呼ばれる直前か直後にそのファイルをその場所に置かねばなりません。

sectionpriority は、生成される .changes ファイルに変更されずに渡されます。


C.1.6 dpkg-genchanges - アップロードコントロールファイル .changes の生成

dpkg-genchanges(1) のマニュアルページを参照ください。


C.1.7 dpkg-parsechangelog - changelog の解析結果の生成

dpkg-parsechangelog(1) のマニュアルページを参照ください。


C.1.8 dpkg-architecture - パッケージを構築するシステム、あるいはホストシステムについての情報

dpkg-architecture(1) のマニュアルページを参照ください。


C.2 Debian パッケージソースツリー

以降で述べるソースアーカイブの構成は、関連した制御情報をもつ Debian パッケージソースツリーが容易に再現され、容易に持ち運べるようにすることを意図したものになっています。 Debian パッケージソースツリーは、オリジナルのプログラムにパッケージ化の工程の為のファイルを付け、 残りのソースコードとインストールスクリプトに必要な変更を加えたものです。

Debian のために作られた特別なファイルは、 Debian パッケージソースツリーのトップレベルの debian ディレクトリに置かれます。


C.2.1 debian/rules - メイン構築スクリプト

debian/rules - メイン構築スクリプト, Section 4.9 を参照ください。


C.2.2 debian/control

ソースパッケージコントロールファイル -- debian/control, Section 5.2 を参照ください。


C.2.3 debian/substvars と変数の置換

変数置換: debian/substvars, Section 4.10 を参照ください。


C.2.4 debian/files

debian/files, Section 4.12 を参照ください。


C.2.5 debian/tmp

binary ターゲットによってバイナリパッケージを構築する際に標準的に使用される一時的ディレクトリです。 パッケージ構築の際は、tmp ディレクトリがファイルシステムツリーのルートになります (例えば、パッケージに付属する makefile の install ターゲットを使用するときや、出力をリダイレクトする場合です)。 また、DEBIAN サブディレクトリを含みます。 パッケージファイルの作成 - dpkg-deb, Section B.1 をご覧ください。

同じソースツリーから複数のバイナリパッケージが生成されるときは、通常複数の debian/tmpsomething ディレクトリを使用します。 例えば、tmp-atmp-doc といった具合です。

binary によって、どんな tmp ディレクトリが作成されたとしても、もちろん、clean ターゲットによって削除されなければいけません。


C.3 Source packages as archives

FTP サイトにおいてある様に、Debian ソースパッケージは 3 つの関連したファイルから成ります。 これら 3 つのファイルは、正しいバージョンのものを入手しないと利用することが出来ません。

Debian ソースコントロールファイル - .dsc

このファイルは一連のフィールドを含んでいて、各フィールドはバイナリパッケージのコントロールファイルと同様に識別され分離されています。 Debian ソースコントロールファイル -- .dsc, Section 5.4 を参照ください。

もとのソースアーカイブ package_upstream-version.orig.tar.gz

このファイルは、プログラムの上流の作者からのソースコードを含む tar (gzip -9 されている) です。

Debian パッケージの diff ファイル package_upstream_version-revision.diff.gz

このファイルは、オリジナルソースを Debian ソースに変換するのに必要な変更を行なうための unified context diff (diff -u) です。 プレインファイルの編集や作成といった変更のみを含むことが出来ます。 ファイルのパーミッション、シンボリックリンク先、特殊ファイルやパイプの特性の変更は出来ません。 またファイルの移動や名前変更も出来ません。

diff に含まれるディレクトリは、ソースツリーのトップにある debian ディレクトリ以外は前もって存在していないといけません。 debian ディレクトリは、アンパック時に必要な場合は dpkg-source によって作られます。

dpkg-sourcedebian/rules という実行ファイルを自動的に作ります (下を参照)。

「オリジナル」のソースコード (に相当する物) がない場合 - 例えば、パッケージが Debian のために特別に用意されたものだったり、Debian maintainer が上流の maintainer でもある場合 - は、 構成が少し違います。 diff ファイルは無く、tar ファイルは package_version.tar.gz という名前で package-version というディレクトリを含むものになります。


C.4 dpkg-source を使わない Debian ソースパッケージのアンパック

Debian ソースパッケージのアンパックには dpkg-source -x がお勧めです。 しかし、それが出来ない場合には次のような方法でアンパック出来ます。

  • tar ファイルを展開し、.orig ディレクトリを作ります。

  • .orig ディレクトリの名前を package-version に変えます。

  • debian ディレクトリをソースツリーのトップに作ります。

  • diff を patch -p0 として適用します。

  • Debian 化されたバージョンと一緒にオリジナルのソースコードも欲しい場合は、 tar ファイルをもう一度展開します。

  • dpkg-source を使わずに正当な Debian ソースアーカイブを作ることは出来ません。特に、 .diff.gz ファイルを作るのに diff 直接使おうとしてもうまくいかないでしょう。


    C.4.1 ソースパッケージに含まれるものに対する制限

    ソースパッケージには、ハードリンク [125] [126] デバイスファイル、ソケットファイル、及び setuid や setgid されたファイル [127] が含まれていてはいけません。

    ソースパッケージングツールは diffpatch を用いてオリジナルのソースと Debian パッケージソースの間の変更を処理します。.orig.tar.gz に含まれたオリジナルのソースツリーを Debian パッケージのソースにするために、これらのツールで処理出来ないような変更を伴ってはいけません。 ソースパッケージを構築する時に dpkg-source エラーで停止してしまうような問題のある変更は次の通りです。

    ソースパッケージを構築する時に、dpkg-source 警告が表示されるものも、処理は継続されるような問題のある変更は次の通りです。

    変更が指摘されず、dpkg-source によって検出もされない変更は次の通りです。

    debian ディレクトリと debian/rulesdpkg-source によって別々に処理されます - 変更を行なう前に debian ディレクトリを作成し、 その後 debian/rules を誰もが実行できるようにします。


    [ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ next ]


    Debian ポリシーマニュアル

    バージョン 3.9.5.0, 2014-07-03

    The Debian Policy Mailing List