DPKG-SOURCE(1)

名称
dpkg-source, dpkg-gencontrol, dpkg-shlibdeps, dpkg-genchanges, dpkg-buildpackage, dpkg-distaddfile, dpkg-parsechangelog - Debian ソースパッケージツール

書式
dpkg-source -x filename.dsc
dpkg-source -b [options] directory [orig-directory|'']
dpkg-gencontrol [options]
dpkg-shlibdeps options
dpkg-genchanges [options]
dpkg-buildpackage [options]
dpkg-distaddfile [options] filename section priority
dpkg-parsechangelog [options]

説明
dpkg-source は Debian ソースアーカイブを圧縮・展開する。

dpkg-gencontrol は展開した Debian ソースツリーから情報を読み、 バイナリパッケージコントロールファイル (デフォルトでは debian/tmp/DEBIAN/control) を生成する。 またさらに、 debian/files にバイナリパッケージのエントリを追加する。

dpkg-shlibdeps は、引数に指定した実行ファイルに関する、共有ライブラリの依存関係を計算する。 またこの依存関係を、展開変数ファイル debian/substvars に、変数名 shlibs:dependencyfield のように追加する。このとき dependencyfield は、依存関係フィールド名である。 その他の shlibs: で始まる変数はファイルから削除される。 dpkg-shlibdeps は、 debian/shlibs.local 、 /etc/dpkg/shlibs.override 、ライブラリの依存関係を満たすような objdump が報告するファイルを含むパッケージの shlibs コントロールエリアファイル、 /etc/dpkg/shlibs.default のいずれかより共有依存情報を読む。 最初にマッチしたものを使用する。 共有ライブラリ依存関係ファイルの書式の詳細は、 Debian パッケージングマニュアル を参照のこと。

dpkg-genchanges は、展開・構築した Debian ソースツリーと、 Debian アップロードコントロールファイル (.changes file). より生成したファイルから情報を読み込む。

dpkg-buildpackage は、パッケージ構築を自動的に補助するのに便利なコントロールスクリプトである。

dpkg-distaddfile は、指定されたファイルのエントリを debian/files に追加する。

dpkg-parsechangelog は、展開した Debian ソースツリーの changelog を解析し、 その情報を機械が読める形で標準出力に出力する。

これらのコマンドは、複数のオプションを一つに組み合わせなければならず、 バラバラに指定したオプションの値は使用できない事に注意。

共通オプション
ここで説明するプログラムの多くはオプションを共有している。 本項で述べたものはいずれのプログラムでも使用できる。

-h  プログラムの詳細なバージョンと、使用方法を表示する。 ここには使用可能なオプションの文法が含まれる。 本オプションはすべてのソースパッケージツールで使用可能である。

-vversion
    dpkg-buildpackage, dpkg-genchanges, dpkg-parsechangelog では、全バージョンの changelog 情報から、指定した バージョン 以降のものを抽出する。

    dpkg-gencontrol では、生成するバイナリパッケージのバージョン番号を設定する。

-Cchangesdescription
    ソースツリーの changelog ファイルの情報ではなく changesdescription に指定したファイルにある変更説明を使用する。 このオプションは dpkg-buildpackage, dpkg-genchanges で使用できる。

-mmaintaineraddress
    パッケージの保守担当者の名前・email アドレスに、 ソースツリーのコントロールファイルの情報ではなく maintaineraddress で指定したものを使用する。 このオプションは dpkg-buildpackage, dpkg-genchanges で使用できる。

-emaintaineraddress
    このパッケージをアップロードする保守担当者の名前・email アドレスに、 ソースツリーのコントロールファイルの情報ではなく maintaineraddress で指定したものを使用する。 このオプションは dpkg-buildpackage, dpkg-genchanges で使用できる。

-si, -sa, -sd
    これらのオプションは、ソースが生成されている (つまり -b や -B が使用されていない) 場合、 dpkg-buildpackage や dpkg-genchanges で生成したアップロードするファイルに、 オリジナルのソースアーカイブが含まれるかどうかコントロールする。

    デフォルトもしくは -si を指定した場合、バージョン番号の最後が -0 や -1 である、つまりバージョン番号の Debian リビジョン部が 0 か 1 であればオリジナルのソースが含まれる。

    -sa は強制的にオリジナルソースを含み、 -sd は強制的にオリジナルソースを含まず、差分のみ含む。

-Vname=value
    出力する展開変数をセットする。 このオプションは、 dpkg-source, dpkg-gencontrol, dpkg-genchanges で使用できる。 展開方法については後述。

-Tsubstvarsfile
    substvarsfile にある展開変数 (デフォルトは debian/substvars ) を読み込む ( dpkg-shlibdeps では書き込む)。 このオプションは、 dpkg-source, dpkg-gencontrol, dpkg-shlibdeps, dpkg-genchanges で使用できる。

-Dfield=value
    出力するコントロールフィールドを上書・追加する。 このオプションは、 dpkg-source, dpkg-gencontrol, dpkg-genchanges で使用できる。

-Ufield
    出力するコントロールフィールドを削除する。 このオプションは、 dpkg-source, dpkg-gencontrol, dpkg-genchanges で使用できる。

-b|-B|-S
    dpkg-genchanges, dpkg-buildpackage 用に、 -b と -B で、バイナリのみ構築することを明示する。 -b は構築・配布されるソースパッケージが存在しないことを表し、 -B は配布するバイナリパッケージの中に、 アーキテクチャに依存しないものがないことを表す。 -S はソースのみアップロードし、 バイナリパッケージを構築する必要がない事を明示する。 -b と -B の違いは dpkg-buildpackage から呼ばれる dpkg-genchanges に現れる。 dpkg-genchanges は、構築されるパッケージの binary-* ターゲットで生成したすべてのファイル用に .changes ファイルを生成するのみである。

    -b は dpkg-source に (展開するのではなく) ソースパッケージを構築するよう指示する。 後の記述も参照すること。

-ccontrolfile
    情報を読み込むメインのコントロールファイルを指定する。 デフォルトは debian/control である。このオプションは、 dpkg-source, dpkg-gencontrol, dpkg-genchanges で使用できる。

-lchangelogfile
    情報を読み込む更新履歴ファイルを指定する。 デフォルトは debian/changelog である。このオプションは、 dpkg-source, dpkg-gencontrol, dpkg-genchanges で使用できる。

-ffileslistfile
    debian/files を使用せず、アップロードするファイルのリストを記述する。 このオプションは、 dpkg-source, dpkg-gencontrol, dpkg-genchanges で使用できる。

-Fchangelogformat
    changelog のフォーマットを指定する。デフォルトのフォーマットでは、 changelog (Debian パッケージングマニュアル参照) の最下行付近の 特殊行から読まれる。また、それが失敗した場合、自動的に debian ( Debian パッケージングマニュアル に記述された標準のフォーマット)となる。 このオプションは、 dpkg-source, dpkg-gencontrol, dpkg-genchanges で使用できる。

-W  このオプションは特定のエラーを警告に変える。 dpkg-source だけで使用できるが dpkg-buildpackage が認識し、 dpkg-source へスルーする。

-E  このオプションはすでにセットした -W オプションを無効にする。 現在、 dpkg-buildpackage と dpkg-source で使用できる。

DPKG-SOURCE オプション
共通オプション -c, -l を相対パス付きで指定した場合、 ソースツリーのトップレベルディレクトリからの相対パスとして解釈する。

-x  ソースパッケージを展開する。オプション以外で Debian ソースコントロールファイル (.dsc) の名前を引数に指定する必要がある。 dpkg-source -x とともに使用できるオプションはない。 dpkg-source は、コントロールファイルから、 ソースパッケージを作成する別のファイル名を取得する。 コントロールファイルは .dsc と同じディレクトリにあると仮定される。

    展開したパッケージのファイルは、それぞれ以下のパーミッションと所有権を持つ。 ファイルやディレクトリが単純に作成された場合、 ディレクトリや実行ファイルは 0777 、通常ファイルは 0666 となる。 以上は展開者の umask で修正される。 親ディレクトリが setgid の場合、以下のディレクトリもそれを継承する。 また、ファイルやディレクトリはすべてそのグループ所有権を継承する。

-b  ソースツリーを構築する。オプション以外の引数を 1, 2 個受け取ることになる。 先頭には、展開するソースツリーが存在するディレクトリの名称の文字列を指定する。 第 2 引数が与えられた場合、オリジナルのソースディレクトリか tar ファイルの 名前、または Debian 特有のパッケージで、そのため Debian 化 diff がない場合、 空文字列であるべきである。 第 2 引数が与えられなければ、 dpkg-source は引数に依存して、オリジナルソース tar ファイル package_upstream-version.orig.tar.gz か、オリジナルソースディレクトリ directory.orig か、空文字列 (オリジナルソースがなく、diff がないため) を探す。

-i[<regexp>]
    比較するファイルのリストから、フィルタをかけたいものを抽出するよう、 perl の正規表現を指定できる。(このリストは find コマンドで生成する) -i 自身により、デフォルトでは CVS, RCS, libtool .deps サブディレクトリを除外して オプションを有効にする。 また、そのすべてのファイルに ~ を付けたバックアップファイルや DEADJOE のようにする。

    これは .diff.gz に含まれた無関係なファイルを切り出すのに便利である
     (例: "debian/BUGS_TODO/*" や "debian/RCS/*,v")。 例えば、cvs-buildpackage(1) でタグを作成したり debian コントロール ファイルをコミットするようなアクセス権がない、外部の CVS を追いかけて パッケージを管理する場合がある。.orig.tar.gz を生成するために、 ディレクトリを元の状態にしておくよう余分に checkout/update を行う必要がある。 このディレクトリは、作業ディレクトリの中と異なるタイムスタンプのファイルを 格納した、CVS/Entries ファイルを持っている。 このために、もし -i スイッチを使用しなければ、すべての .diff.gz に無駄にそれを含めなければならない。

-I<filename>
    このオプションで指定したファイル名が、.orig.tar.gz ファイルや .tar.gz ファイル を生成するときに呼ばれる tar の --exclude オプションに渡される。 例えば、-ICVS では tar が .tar.gz ファイルを生成する際に CVS ディレクトリをスキップする。 複数のファイル名を除外したい場合には、このオプションを複数回指定する。

-sa,-sp,-su,-sk,-sA,-sP,-sU,-sK,-ss ( -b 使用時)
    package_upstream-version.orig.tar.gz. -sk や -sp が指定されると、 dpkg-source は、オリジナルソースが tar ファイルであるとして扱う。 デフォルトのファイル名は、 package_upstream-version.orig.tar.gz となる。 この場所にオリジナルソースの tar ファイルを残すが、 まだファイルが存在しない場合、カレントディレクトリにコピーする。 -sk ではなく -sp を指定した場合は、いったん削除した後に実行する。

    -su や -sr を指定した場合、 dpkg-source は、オリジナルソースがディレクトリであるとして扱い (デフォルトは、 package-upstream-version.orig )、そこからオリジナルソースアーカイブを新規に作成する。 -sr を使用すると、 dpkg-source はディレクトリを使用した後に削除する。

    -ss を指定すると、 dpkg-source はオリジナルソースがディレクトリ・ tar ファイルの双方で利用可能である という前提でして動作する。 ここでは diff を作成するためにディレクトリを使用するが、 .dsc を作成するためには tar ファイルを使用する。 万一ディレクトリと tar ファイルが一致しない場合、不正なソースアーカイブが 生成されるため、本オプションを使用する場合は注意が必要である。

    -sn を指定すると dpkg-source はオリジナルソースを参照しない。また diff も生成しない。 第 2 引数 (もしあれば) は空文字列でなければならない。 これは区別すべき上流ソースが存在せず、debian 化 diff を持たない Debian 特有のパッケージに使用する。

    -sa や -sA を指定した場合、 dpkg-source は、tar ファイルやディレクトリ (第 2 引数があればどちらか、あるいは空文字列 ( -sn と等価) の場合もある) としてオリジナルソースアーカイブを捜す。 tar ファイルが存在する場合、これを展開して diff を作成しその後削除する ( -sp と等価)。 ディレクトリが存在する場合、ここからオリジナルソースを圧縮して作成し、 ディレクトリは削除する ( -sr と等価)。 どちらもない場合、debian 化 diff がなくソースアーカイブしか持たない パッケージとして扱う ( -sn と等価)。 両方存在する場合、 -sA
     ( -sP と等価)を指定していれば、 dpkg-source はディレクトリを無視して上書きするが、 -sa を指定していればエラーを上げる。 デフォルトは -sA である。

    -sa, -sp, -sk, -su, -sr では既存の tar ファイルやディレクトリを更新しない。 更新したい場合は、 -sA, -sP, -sK, -sU, -sR を使用するべきである。

-sp,-su,-sn ( -x 使用時)
    すべてのケースで既存のオリジナルソースツリーは削除される。

    展開時に -sp を使うと、 オリジナルソースが存在すれば tar ファイルとして残る。 カレントディレクトリに存在しない、ないし既存であるが 異なるファイルが存在する場合は、そこにコピーされる。これはデフォルトである。

    -su では、オリジナルソースツリーを展開する。

    -sn は、オリジナルソースがカレントディレクトリにコピーされておらず、 展開されてもいないことを保証する。 カレントディレクトリにあったいずれのオリジナルソースツリーも削除されたままである。

DPKG-GENCONTROL オプション
dpkg-gencontrol はオプションなしで実行することはできない。

-ppackage
    package バイナリパッケージの情報を生成する。 ソースコントロールファイルに、ただ 1 つのバイナリパッケージが記述されている 場合、このオプションは省略できる。 そうでない場合は、どのバイナリパッケージの情報を生成するか選択する必要がある。

-nfilename
    パッケージのファイル名が、通常の package_version_arch.deb ではなく filename であると仮定する。

-is, -ip, -isp
    メインのソースコントロールファイルより Section および Priority フィールドを、生成するバイナリパッケージのコントロールファイルに取り込む。 通常、この情報はここで取り込むだけではなく、 .changes ファイルでも使用する。 -isp は両方のフィールドを取り込み、 -is は Section のみ、 -ip は Priority のみ取り込む。

-Ppackagebuilddir
    dpkg-source に debian/tmp. ではなく、 packagebuilddir でパッケージの構築を行うよう指示を出す。 この値は Installed-Size 置換変数やコントロールファイルフィールドのデフォルト値を探したり ( du
     利用)、 デフォルトのファイル出力先を指定するのに使用する。

-O  コントロールファイルを、 debian/tmp/DEBIAN/control ( -P を使用する時は packagebuilddir/DEBIAN/control ) ではなく標準出力に出力する。

DPKG-SHLIBDEPS オプション
dpkg-shlibdeps はオプションではない引数を、 -eexecutable で与えられたのと同様に、実行ファイルとして解釈する。

-eexecutable
    executable が必要とする、適当な共有ライブラリを依存関係に含める。

-ddependencyfield
    コントロールファイルの依存関係フィールドに dependencyfield 依存関係を加える。 (このフィールドの依存関係は変数 shlibs:dependencyfield に置かれる)

    -ddependencyfield オプションは次の -ddependencyfield までに与えられた、すべての実行ファイルに効果を現わす。 デフォルトの dependencyfield は Depends である。

    同じ依存関係エントリ (あるいは代替セット) が 認識される依存関係フィールド名 Pre-Depends, Depends, Recommends, Enhances, Suggests の中から複数現われる場合、 dpkg-shlibdeps は、最重要依存関係であるもの以外のすべてのフィールドから、 自動的に依存関係を削除する。

-pvarnameprefix
    shlibs: ではなく、 varnameprefix: で始まるものを展開変数とする。 同様に、( shlibs: ではなく) varnameprefix: で始まる任意の既存の展開変数を展開変数ファイルから削除する。

.BI -L localshlibsfile
    debian/shlibs.local に代えて localshlibsfile から、 dpkg-shlibs へ最優先共有ライブラリ依存情報を読み込む。

-O  展開変数の設定を 展開変数ファイル (デフォルトでは debian/substvars ) に追加せず、標準出力に出力する。

DPKG-GENCHANGES オプション
dpkg-genchanges はオプション以外の引数を取らない。

-uuploadfilesdir
    アップロードするファイルを .. からではなく uploadfilesdir から探す ( .changes ファイルに、アップロードするファイルのファイルサイズとチェックサムを 含めるために、このファイルを探す必要がある)。

-q  通常 dpkg-genchanges は情報メッセージを標準エラー出力に出力する (例、アップロードするパッケージのソースファイル数)。 -q はこのメッセージを抑制する。

DPKG-BUILDPACKAGE オプション
dpkg-buildpackage はオプション以外の引数を取らない。

-kkey-id
    パッケージのサインに使用する key-ID を設定する。

-rgain-root-command
    dpkg-buildpackage が root として構築プロセスの一部を実行する必要がある場合、 gain-root-command で指定したコマンドを実行するコマンドの前に付ける。 gain-root-command は PATH に存在するプログラム名で、実行する実際のコマンドとそのコマンドがとる引数を、 引数に指定せねばならない。 gain-root-command にはスペースやその他シェルのメタ文字を使用してはならない。 一般的に gain-root-command は sudo, super, really にする。 コマンドを実行するのに -c オプションを必要とし、 さらに -c オプションを使用しても、実行するコマンドへ引数を渡さずに ユーザのシェルを起動するだけなので、 su は適切ではない。

-psign-command
    dpkg-buildpackage がソースコントロールファイル (.dsc) や、 .changes ファイルの署名に GPG や PGP を実行する必要がある場合、 pgp の代わりに sign-command を実行する (必要なら PATH を検索 )。 sign-command は pgp が受け取るすべての引数を使用する。 PGP 形式ではなく GPG 形式の引数を使用する場合は、 -sgpg オプションを与えればよい。 sign-command にはスペースやその他シェルのメタ文字を使用してはならない。

-tc パッケージ構築後にソースツリーを ( gain-root-command debian/rules clean を使用して) 掃除する。

-us, -uc
    ソースパッケージや .changes ファイルに (それぞれ) 署名しない。

-aarchitecture
    構築先の Debian アーキテクチャを指定する。 構築するマシンのアーキテクチャは自動的に決定され、 デフォルトではそれが構築先となる。

-i[<regexp>]
    dpkg-source にそのまま渡す。

-I<filename>
    dpkg-source にそのまま渡す。複数回繰り返す可能性がある。

-D  構築依存関係や競合を検出し、これを満たさなければ異常終了する。

-d  構築依存関係や競合を検出しない。

-nc ソースツリーの掃除をしない (暗に -b を含む)。

DPKG-DISTADDFILE 引数
dpkg-distaddfile は共有オプションしか取らない。オプション以外では .changes ファイル用に、ファイル名、セクション、優先度といった 3 個の引数を取る。

ファイル名には、 dpkg-distaddfile を実行するときのカレントディレクトリからの相対パスではなく dpkg-genchanges がファイルを通常検出するであろう相対ディレクトリ (通常は .. ) を明示するべきである。

DPKG-PARSECHANGELOG 引数
dpkg-parsechangelog 共通以外のオプションや、オプションではない引数を取らない。

変数展開
dpkg-source, dpkg-gencontrol, dpkg-genchanges がそれぞれコントロール情報 ( dpkg-source はソースコントロールファイル .dsc 、 dpkg-gencontrol と dpkg-genchanges は標準出力 ) を書き出す前に、出力ファイルで変数展開を実行する。

変数展開は ${variable-name} の形で行う。 変数名は英数字、ハイフン、コロンで構成され、先頭は英数字である。 展開後のフィールド全体に対して、さらに展開されるか再捜査するため、 変数展開が残らないよう繰り返し実行される。

展開がすべて行われた後、文字列 ${} の各項目は、 $ 記号で置き換えられる (展開法則外) 。

変数は -V 共通オプションで設定できる。 また、 debian/substvars ファイル (または -T オプションで指定したファイル) に指定もできる。このファイルは各行を name=value の形で記述する。 各行の空白、空行、 # 文字で始まる行 (コメント) は無視される。

加えて、以下の標準変数が使用可能である:

Arch
    現在のビルドアーキテクチャ ( dpkg --print-architecture から)

Source-Version
    ソースパッケージのバージョン (changelog ファイルより)

Installed-Size
    パッケージをインストールした際、ファイルの合計サイズ。 この値はコントロールファイルの該当するフィールドにコピーされるため、 この設定でフィールドの値を変更できる。 この変数を設定しない場合、 dpkg-gencontrol は、デフォルト値を取得するため du -k debian/tmp を使用する。

Extra-Size
    パッケージインストール時に追加で消費されるディスク領域。 この変数を設定していると、 Installed-Size コントロールファイルフィールドにコピーする前に、 Installed-Size 変数の値 (明示、デフォルトのどちらでも) に加算される。

F:fieldname
    出力フィールド fieldname (大文字でなければならない) の値。 この変数の設定は、明示的に展開する場所以外では効果がない。

Format
    .changes ファイルを生成したソースパッケージングスクリプトのバージョン。 この変数を設定すると、 .changes ファイルの Format フィールドも変更される。

Newline, Space, Tab
    それぞれ対応する文字を保持する。

shlibs:dependencyfield
    dpkg-shlibdeps で生成した形式の名前を持った変数設定。(上記を参照)

変数が参照されるが定義されない場合警告され、空値と見なされる。

ファイル

debian/control
    ソースパッケージとバイナリパッケージについてバージョンに依存しない情報を持つ、 メインのソースコントロール情報ファイル。

debian/changelog
    ソースパッケージに関するバージョン依存の情報 (アップロード緊急配布、 特定のリリース以来行なわれた変更、ソースのバージョン番号) を記述した changelogファイル。

debian/files
    アップロード準備中の、生成されたファイルのリスト。 dpkg-gencontrol は、生成するバイナリパッケージのコントロールファイル用に、 推定したファイル名を加える。さらにファイルを加えるのに dpkg-distaddfile を使用できる。 dpkg-genchanges は .changes ファイル生成時にこのデータを読み込む。

debian/substvars
    展開変数と値のリスト。

debian/shlibs.local
    パッケージごとに上書きする、共有ライブラリ依存情報。

/etc/dpkg/shlibs.override
    システムごとに上書きする、共有ライブラリ依存情報。

/etc/dpkg/shlibs.default
    システムごとのデフォルト共有ライブラリ依存情報。

バグ
フィールドの上書きがある標準出力フィールドの設定と比較する点がわかりにくい。

debian/files ファイルのバイナリパッケージエントリは変数展開によって 2 度行われる。 $ や {, } はパッケージ名や、バージョン番号では有効でないので、重要視するべきではない。

空白やシェルのメタ文字を中に指定することや、 gain-root-command や sign-command 用の初期化引数を指定するのを可能にするべき。

参照
Debian パッケージングマニュアル,
Debian ポリシーマニュアル,
dpkg-deb(1), dpkg(8), dselect(8), gpg(1), pgp(1).

著者
このユーティリティと manpage は Ian Jackson によって書かれた。

COPYRIGHT
Copyright (C) 1995-1996 Ian Jackson
Copyright (C) 2000 Wichert Akkerman
This is free software; see the GNU General Public Licence version 2 or later for copying conditions. There is NO WARRANTY. See /usr/share/doc/dpkg/copyright and /usr/share/common-licenses/GPL for details.

翻訳者
倉澤 望 <nabetaro@debian.or.jp>