dpkg-buildpackage(1)

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

書式
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-target は build および binary (デフォルト、もしくは -b が指定されていた場合)、build-arch および binary-arch (-B が指定されていた場合)、build-indep および binary-indep (-A が指定されていた場合) のいずれかの値をとる。

6.  It calls gpg2 or gpg to sign the .dsc file (if any, unless -us is specified or on UNRELEASED builds).

7.  dpkg-genchanges を呼び出して、.changes ファイルを生成する。dpkg-buildpackage のオプションの多くが dpkg-genchanges に引き継がれる。

8.  It calls gpg2 or gpg to sign the .changes file (unless -uc is specified or on UNRELEASED builds).

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 システムタイプを上書きするために用いられる。

-Pprofile[,...]
    Specify the profile(s) we build, as a comma-separated list, without the "profile." namespace prefix. The default behavior is to build for no specific profile. Also adds them (as a space separated list) to the DEB_BUILD_PROFILES environment variable which allows, for example, debian/rules files to use this information for conditional builds.

-jjobs
    Number of jobs allowed to be run simultaneously, equivalent to the make(1) option of the same name. Will add itself to the MAKEFLAGS environment variable, which should cause all subsequent make invocations to inherit the option. Also adds parallel=jobs to the DEB_BUILD_OPTIONS environment variable which allows debian/rules files to use this information for their own purposes. The parallel=jobs in DEB_BUILD_OPTIONS environment variable will override the -j value if this option is given.

-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-command はPATH 上のプログラム名である必要があり、実際に実行したいコマンドに続き、そのコマンドの引数を引数として指定する。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
    When dpkg-buildpackage needs to execute GPG to sign a source control (.dsc) file or a .changes file it will run sign-command (searching the PATH if necessary) instead of gpg2 or gpg. sign-command will get all the arguments that gpg2 or gpg would have gotten. sign-command should not contain spaces or any other shell metacharacters.

-kkey-id
    パッケージに署名する際に使用する鍵のIDを指定する。

-us ソースパッケージに署名しない。

-uc .changes ファイルに署名しない。

--force-sign
    Force the signing of the resulting files (since dpkg 1.17.0), regardless of -us or -uc or other internal heuristics.

-i[regex]
-I[pattern]
-s[nsAkurKUR]
-z, -Z
    dpkg-source にそのまま引き渡される。そちらのマニュアルページを参照のこと。

--source-option=opt
    dpkg-source に opt オプションを引き渡す。

--changes-option=opt
    dpkg-genchanges に opt オプションを引き渡す。

--admindir=dir
--admindir dir
    dpkg データベースの位置を変更する。デフォルトの位置は /var/lib/dpkg である。

-?, --help
    利用方法を表示して終了する。

--version
    バージョン情報を表示して終了する。

環境変数

DEB_SIGN_KEYID
    If set, it will be used to sign the .changes and .dsc files. Overridden by the -k option.

DEB_BUILD_PROFILES
    If set, it will be used as the active build profile(s) for the package being built. It is a space separated list of profile names, without the "profile." namespace prefix. Overridden by the -P option.

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

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

参考

  コンパイラフラグのエクスポート停止
Between dpkg 1.14.17 and 1.16.1, dpkg-buildpackage exported compiler flags (CFLAGS, CXXFLAGS, FFLAGS, CPPFLAGS and LDFLAGS) with values as returned by dpkg-buildflags. This is no longer the case.

  Default build targets
dpkg-buildpackage is using the build-arch and build-indep targets since dpkg 1.16.2. Those targets are thus mandatory. But to avoid breakages of existing packages, and ease the transition, it will fallback to using the build target if make -f debian/rules -qn build-target returns 2 as exit code.

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

関連項目
dpkg-source(1), dpkg-architecture(1), dpkg-buildflags(1), dpkg-genchanges(1), fakeroot(1), gpg2(1), gpg(1).

翻訳者
高橋 基信 <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>.