dpkg-buildpackage(1) バイナリパッケージおよびソースパッケージのビルド

書式

dpkg-buildpackage [option...]

説明

dpkg-buildpackage は、Debian パッケージのビルドを自動化するプログラムである。これには以下のステップが含まれる:
1.
様々な環境変数 (環境変数 を参照のこと) を定義することで、ビルド環境を設定し、dpkg-source --before-build を呼び出す (-T もしくは --targetが指定されていない限り)。
2.
ビルドにおける依存関係が満たされているか、競合が発生していないかをチェックする (-d が指定されていない限り)。
3.
-T もしくは --target オプションにより、ビルドのターゲットが指定されている場合は、ターゲットを呼び出して、そこで実行を停止する。それ以外の場合は fakeroot debian/rules clean を呼び出し、ビルドツリーをクリアする (-nc が指定されていない限り)。
4.
dpkg-source -b を呼び出し、ソースパッケージを生成する (-b, -B, -A によってバイナリパッケージのみのビルドが指定されていない限り)。
5.
fakeroot debian/rules binary-target に続き、debian/rules build-target を呼び出す (-S によってソースパッケージのみのビルドが指定されていない限り)。build-target および binary-targetbuild および binary (デフォルト、もしくは -b が指定されていた場合)、build-arch および binary-arch (-B が指定されていた場合)、build-indep および binary-indep (-A が指定されていた場合) のいずれかの値をとる。
6.
gpg を呼び出し、.dsc ファイルに署名を行う (-us が指定されていない限り)。
7.
dpkg-genchanges を呼び出して、.changes ファイルを生成する。dpkg-buildpackage のオプションの多くが dpkg-genchanges に引き継がれる。
8.
gpg を呼び出し、.changes ファイルに署名を行う (-uc が指定されていない限り)。
9.
-tc が指定されていた場合、fakeroot debian/rules clean が再度呼び出される。最後に dpkg-source --after-build が呼び出される。

オプション

-b
バイナリパッケージのみのビルドを指定する。ソースファイルはビルドされず、配布もされない。オプションは dpkg-genchanges に渡される。
-B
アーキテクチャ依存のパッケージについて、バイナリパッケージのみのビルドを指定する。オプションは dpkg-genchanges に渡される。
-A
アーキテクチャ非依存のパッケージについて、バイナリパッケージのみのビルドを指定する。オプションは dpkg-genchanges に渡される。
-S
ソースパッケージのみのビルドを指定する。バイナリパッケージは作成されない。オプションは dpkg-genchanges に渡される。
-F
バイナリパッケージとソースパッケージの両方をビルドする、通常のフルビルドを指定する。これはビルドオプションを指定しなかった際のデフォルトの挙動である。

--target=target
--target target
-Ttarget

ビルド環境の設定後に、debian/rules target を呼び出し、そこでパッケージのビルド処理を中止する。--as-root も設定されていた場合、コマンドは root として実行される (-r も参照のこと)。Debian policy によって、公式に root での実行が必須とされているターゲットについては、本オプションは不要である。
--as-root
--target と併せて指定された場合のみ有効であり、target の実行に root 権限が必要であることを指定する。

-si
-sa
-sd
-vversion
-Cchanges-description
-mmaintainer-address
-emaintainer-address

dpkg-genchanges にそのまま引き渡される。そちらのマニュアルページを参照のこと。
-aarchitecture
ビルド対象となる Debian アーキテクチャを指定する。ビルドを実行するマシンのアーキテクチャは自動的に判別され、ホストマシンのデフォルト値となる。
-tgnu-system-type
ビルド対象となる GNU システムタイプを指定する。これは -a オプションの代わりとしてターゲットの Debian アーキテクチャに対応するデフォルトの GNU システムタイプを上書きするために用いられる。
-jjobs
同時に実行させることが可能なジョブの数であり、make(1) の同名のオプションと同じ意味を持つ。MAKEFLAGS 環境変数に追加され、後に続くすべての make の呼び出しに、このオプションが引き継がれる。このオプションは、debian/rules ファイルがこの情報を使用できるように DEB_BUILD_OPTIONS 環境変数に対しても parallel=jobs を追加する。DEB_BUILD_OPTIONS 環境変数に parallel=jobs が設定されていた場合、-j オプションの値は上書きされる。
-D
ビルドの依存関係と競合をチェックし、問題がある場合は処理を中断させる。これはデフォルトの挙動である。
-d
ビルドの依存関係と競合をチェックしない。
-nc
ソースツリーを消去しない (-B, -A, -S いずれもが指定されない場合は、-b が指定されたと見なされる)。
-tc
パッケージのビルド後にソースツリーを消去する (gain-root-command debian/rules clean が用いられる)。
-rgain-root-command
dpkg-buildpackage がビルド処理の一部を root 権限で実行する必要がある場合、このオプションが指定されていれば、実行するコマンドの前に gain-root-command が付けられる。このオプションが指定されていなかった場合は、fakeroot が存在していれば、それがデフォルトで用いられる。gain-root-commandPATH 上のプログラム名である必要があり、実際に実行したいコマンドに続き、そのコマンドの引数を引数として指定する。gain-root-command には (スペースで区切られた) パラメータを含めてもよいが、シェルのメタキャラクタを含めることはできない。gain-root-command は通常 fakeroot, sudo, super, really などである。su は、実行したいコマンドに引数を個々に引き渡すのではなく、-c を用いてユーザのシェルを起動するだけであるため適切ではない。
-Rrules-file
Debian パッケージのビルドの際は、通常 debian/rules コマンドが幾つかの標準的な引数を付けて実行される。このオプションにより、パッケージのビルドの際に別のプログラムを使用することが可能となる (スペースで区切られた引数を含めることも可能である)。標準のルールファイルを別の make プログラムで実行する (例えば rules-file の代わりに /usr/local/bin/make -f debian/rules を使用する) ために使用することもできる。
-psign-command
dpkg-buildpackage がソースコントロール (.dsc) ファイルや .changes ファイルに署名するために GPG を実行する必要がある場合、gpg の代わりにsign-command を実行する (必要に応じて PATH を検索する) 。sign-command には gpg に引き渡されるすべての引数が引き渡される。sign-command にはスペースやシェルのメタキャラクタを含めてはならない。
-kkey-id
パッケージに署名する際に使用する鍵のIDを指定する。
-us
ソースパッケージに署名しない。
-uc
.changes ファイルに署名しない。

-i[regexp]
-I[pattern]
-s[nsAkurKUR]
-z, -Z

dpkg-source にそのまま引き渡される。そちらのマニュアルページを参照のこと。
--source-option=opt
dpkg-sourceopt オプションを引き渡す。
--changes-option=opt
dpkg-genchangesopt オプションを引き渡す。

--admindir=dir
--admindir dir

dpkg データベースの位置を変更する。デフォルトの位置は /var/lib/dpkg である。
-?, --help
利用方法を表示して終了する。
--version
バージョン情報を表示して終了する。

環境変数

dpkg-buildpackage が幾つかの変数をエクスポートしていたとしても、debian/rules はその存在に依存してはならない。代わりに必要な値を取得するためのインタフェースを使用すること。

dpkg-architecture によって設定される変数

dpkg-architecture-a および -t を引数として呼び出される。このコマンドの -s オプションによって設定された変数はビルド環境にマージされる。

コンパイラフラグのエクスポート停止

1.14.17 から 1.16.1 の間では、dpkg-buildpackagedpkg-buildflags によって返却される値としてコンパイラフラグ (CFLAGS, CXXFLAGS, FFLAGS, CPPFLAGS, LDFLAGS) をエクスポートしていた。現在のバージョンでは、行われていない。

後方互換性

バージョン 1.16.2 以降の dpkg-buildpackage は、build-arch および build-indep ターゲットを使用している。これらのターゲットは必須である。しかし、既存パッケージで問題が発生するのを回避し、円滑な移行を行うために、make -f debian/rules -qn build-target が戻り値として 2 を返却した場合は、build ターゲットにフォールバックする。

バグ

gain-root-command および sign-command の先頭の引数として、スペースやシェルのメタキャラクタを指定できるようにすべきである。

翻訳者

高橋 基信 <monyo@monyo.com>. 喜瀬 浩 <kise@fuyuneko.jp>. 関戸 幸一 <sekido@mbox.kyoto-inet.or.jp>. 鍋谷 栄展 <nabe@debian.or.jp>. 倉澤 望 <nabetaro@debian.or.jp>. 石川 睦 <ishikawa@linux.or.jp>. 鵜飼 文敏 <ukai@debian.or.jp>. 中野 武雄 <nakano@apm.seikei.ac.jp>.

翻訳校正

Debian JP Documentation ML <debian-doc@debian.or.jp>.