table of contents
dpkg-source(1) | dpkg ユーティリティ | dpkg-source(1) |
名前¶
dpkg-source - Debian ソースパッケージ (.dsc) 操作ツール書式¶
dpkg-source [option...] command説明¶
dpkg-source は、Debian ソースアーカイブの作成、展開を行う。コマンド¶
- -x filename.dsc [output-directory]
- ソースパッケージを展開する。Debian
ソースコントロールファイル
( .dsc)
名として、オプション形式ではない引数を
1
つ指定する必要がある。それに続きオプション形式ではない引数を指定することで、ソースパッケージの展開先となるディレクトリを指定することができる。このディレクトリは既存であってはならない。ディレクトリが指定されなかった場合、ソースパッケージは、現在のワーキングディレクトリ以下の
source-version
というディレクトリに展開される。
- -b directory [format-specific-parameters]
- ソースパッケージをビルドする。先頭のオプション形式ではない引数は
Debian
化されたソースツリー
(debian
サブディレクトリとオリジナルのファイルに対する変更物)
の格納されたディレクトリ名になる。パッケージのビルドに使用されるソースパッケージ形式によって、この他の引数が存在する場合もあるだろう。
- --print-format directory
- dpkg-source -b directory が
呼び出された際に、ソースパッケージのビルドに用いられるソース形式を表示する。
- --before-build directory
- ソースパッケージ形式に合致するフックを実行する。このフックはパッケージのビルド開始前に呼び出される
( dpkg-buildpackage は、 debian/rules clean
実行前の非常に早い段階でこれを呼び出す)。このコマンドは冪等であり、複数回呼び出されてもよい。すべてのソース形式がこのフックを実装しているわけではない。実装される場合は、通常、Debian
のパッチが適用されていることを確認するといったビルド前のソースツリーの準備に用いられる。
- --after-build directory
- ソースパッケージ形式に合致するフックを実行する。このフックはパッケージのビルド完了後に呼び出される
( dpkg-buildpackage
は、これを最後に呼び出す)
このコマンドは冪等であり、複数回呼び出されてもよい。すべてのソース形式がこのフックを実装しているわけではない。実装される場合は、通常、
--before-build
が行った変更を元に戻すために用いられる。
- --commit [directory] ...
- directory
に展開されたソースツリーの変更を記録する。このコマンドはソース形式に応じて追加の引数を取ることができる。この操作が意味を持たない形式については、エラーとなる。
- -?, --help
- 利用方法を表示して終了する。
- --version
- バージョン情報を表示して終了する。
一般的なビルドオプション¶
- -ccontrol-file
- 情報の読み取り元となるメインのソース制御ファイルを指定する。デフォルトは debian/control である。相対パス名で指定された場合は、ソースツリーのトップのディレクトリを起点として解釈される。
- -lchangelog-file
- 情報の読み取り元となる changelog ファイルを指定する。デフォルトは debian/changelog である。相対パス名で指定された場合は、ソースツリーのトップのディレクトリを起点として解釈される。
- -Fchangelog-format
- changelog ファイルのフォーマットを指定する。指定可能なフォーマットについての情報は、 dpkg-parsechangelog(1) を参照のこと。
- --format=value
- ソースパッケージのビルドに指定した形式を使用する。これは debian/source/format で指定された形式に優先する。
- -Vname=value
- 変数を設定する。出力時の置換に関する詳細は、deb-substvars(5) を参照のこと。
- -Tsubstvars-file
- substvars-file にある変数を読み込む。デフォルトではいかなるファイルも読み込まれない。このオプションは複数のファイルから変数を読み取るために複数回指定することができる。
- -Dfield=value
- 出力制御ファイルのフィールドを上書きもしくは追加する。
- -Ufield
- 出力制御ファイルのフィールドを削除する。
- -Zcompression, --compression=compression
- ファイル作成 (tar アーカイブや diff) の際に使用する圧縮形式を指定する。このオプションは、新規の圧縮時にのみ適用される。既存の tar アーカイブが再圧縮されることはない。指定可能な値は次のとおり: gzip, bzip2, lzma, xz。デフォルトは gzip である。 xz は dpkg-dev 1.15.5 以降でのみ指定できる。
- -zlevel, --compression-level=level
- 使用する圧縮レベル。-Z と併せて指定する。これは新規の圧縮時にのみ適用される。指定可能な値は次のとおり: 1 から 9, best, fast。デフォルトは gzip および bzip2 の場合 9、xz および lzma の場合 6 である。
- -i[regexp], --diff-ignore[=regexp]
- perl
形式の正規表現を用いて
diff
に含まれるファイルから指定したファイルを除外することができる
(除外リストは find
コマンドで生成される)。
(ソースパッケージが
VCS のバージョン 3
形式のソースパッケージとしてビルドされている場合、これを指定したファイルに対するコミットされていない変更を無視するために使用することができる。-i.*
を使用することで、それらすべてを無視することもできる)。
-i
を指定することでオプションが有効となり、デフォルトの正規表現により、制御ファイルと一般的なバージョン管理システムのディレクトリ、バックアップファイル、スワップファイル、libtool
の出力ディレクトリが除外される。正規表現は
1
つしか有効にならない。
-i
オプションを複数回指定した場合、最後に指定したものしか有効にならない。
- --extend-diff-ignore=regexp
- 指定された perl 形式の正規表現により --diff-ignore のデフォルト値および (設定されている場合) 現在の値が拡張される。これは、現在の値に " |regexp" を結合することで行われる。このオプションは、 debian/source/options にて、自動パッチ生成によって自動的に生成されるファイルを除外したい場合に有用である。
- -I[file-pattern], --tar-ignore[=file-pattern]
- このオプションが指定された場合、tar(1)
が .orig.tar や .tar
ファイルを生成する際に呼び出される際の
--exclude オプションに、
file-pattern
が引き渡される。例えば
-ICVS を指定すると、tar は
.tar.gz
ファイルを生成する際に、CVS
ディレクトリをスキップする。複数の除外パターンを指定するために、このオプションを複数回指定してもよい。
一般的な展開オプション¶
- --no-copy
- 展開されたソースパッケージ以外に、オリジナルの tar アーカイブをコピーしない。
- --no-check
- 展開前に、署名やチェックサムの検証を行わない。
- --require-valid-signature
- 展開するユーザの
trustedkeys.gpg
keyring、ベンダ固有の keyring
のいずれか、official Debian keyring (
/usr/share/keyrings/debian-keyring.gpg
もしくは
/usr/share/keyrings/debian-maintainers.gpg)
のいずれかによって検証可能な
OpenPGP
の署名が含まれない場合に、ソースパッケージの展開を拒否する。
ソースパッケージ形式¶
使用しているソース形式が分からない場合は、"3.0 (quilt)" もしくは "3.0 (native)" のいずれかであろう。Debian においてこれらの形式を使用するための情報については、http://wiki.debian.org/Projects/DebSrc3.0 を参照のこと。1.0 形式¶
この形式のソースパッケージには、 .diff.gz と対応する .orig.tar.gz、もしくは .tar.gz のみ (この形態を ネイティブ と称する) が含まれる。- ビルドオプション (-b と併用):
- -sk
- オリジナルのソースが、デフォルトでは package_upstream-version.orig.tar.extension という名前の tar ファイルであることを指示する。このオリジナルのソースは適切な場所にtar ファイルのまま残され、カレントディレクトリに存在していない場合はそこにコピーされる。tar ファイルは diff を生成するために、 directory.orig に展開される。
- -sp
- -sk と同様だが、最後にディレクトリを削除する。
- -su
- オリジナルのソースが、デフォルトでは package-upstream-version.orig という名前のディレクトリにあることを指示する。 dpkg-source は、ここから新しいソースアーカイブを作成する。
- -sr
- -su と同様だが、使用後にディレクトリを削除する。
- -ss
- オリジナルのソースが、ディレクトリと tar ファイルの両方に存在することを指示する。dpkg-source はディレクトリにあるファイルを用いて diff を作成するが、 .dsc ファイル作成の際は tar ファイルを使用する。このオプションは注意して用いること。ディレクトリと tar ファイルの整合性が取れていない場合、不正なソースアーカイブが生成されてしまう。
- -sn
- オリジナルのソースを参照せず、diff も生成しないことを指示する。2 番目の引数が存在する場合、それは空文字列である必要がある。これは、アップストリームのソースが存在せず、Debian 化するための差分が存在しない Debian 固有のパッケージに用いられる。
- -sa もしくは -sA
- オリジナルのソースアーカイブが tar ファイルもしくはディレクトリであることを指示する。2 番目の引数が指定されている場合、それは上記のいずれであってもよいし、空文字列でもよい (その場合は、 -sn (訳注: -sp の誤りと思われる) と同等である)。tar ファイルが存在した場合は、diff 生成のために展開され、最後に削除される (これは -sp と同等である)。ディレクトリが存在した場合は、オリジナルのソースを作成するためにアーカイブ化され最後に削除される (これは、 -sr と同等である)。いずれも存在しなかった場合、パッケージは Debian 化の diff を持たず、ソースアーカイブのみが存在すると見なされる (これは、 -sn と同等である)。いずれも存在した場合、 dpkg-source はディレクトリの存在を無視して、 -sA が指定されていた場合はこれを上書きし (これは -sP と同等である)、 -sa が指定されていた場合はエラーを発生させる。デフォルトは -sA である。
- --abort-on-upstream-changes
- 生成された diff に
Debian
サブディレクトリ外にあるファイルへの変更が含まれていた場合、処理を失敗させる。このオプションは
debian/source/options
で指定できない。
debian/source/local-options
で指定することは可能である。
- 展開オプション (-x と併用):
- -sp
- オリジナルのソースを tar ファイルとして残す (存在する場合)。カレントディレクトリに配置されていない場合や、存在しているが異なるファイルである場合は、オリジナルのソースがコピーされる ( これはデフォルトの挙動である)。
- -su
- オリジナルのソースツリーを展開する。
- -sn
- オリジナルのソースをカレントディレクトリにコピーさせず、展開もさせない。カレントディレクトリに存在するオリジナルのソースツリーは削除される。
- --skip-debianization
- アップストリームのソースのトップに存在する Debian 化の diff を適用しない。
2.0 形式¶
wig&pen という名称でも知られている。この形式は広範な使用を推奨されておらず、"3.0 (quilt)" が代替している。wig&pen は新世代のソースパッケージ形式の最初の仕様である。3.0 (native) 形式¶
この形式は 1.0 形式で定義されたネイティブパッケージ形式の拡張版である。これはすべての圧縮方式をサポートし、デフォルトでは、多くの一時ファイル (デフォルト値は --help 出力の -I オプションを参照のこと) やバージョン管理システム固有のファイルやディレクトリを無視する。3.0 (quilt) 形式¶
この形式のソースパッケージには、オリジナルの tar アーカイブ ( .orig.tar.ext。 ext は gz, bz2, lzma, xz のいずれか) および debian tar アーカイブ ( .debian.tar.ext) が最低でも含まれる。追加のオリジナルの tar アーカイブ ( .orig-component.tar.ext) を含んでもよい。 component には、英数文字とダッシュ ("-") のみを含めることができる。 展開 主たるオリジナルの tar アーカイブが最初に展開され、ついで追加のオリジナル tar アーカイブが、ファイル名の component からとった名前のサブディレクトリに展開される (既存のディレクトリがあった場合、上書きされる)。debian tar アーカイブは、既存の debian ディレクトリの削除後、ソースディレクトリのトップに展開される。debian tar アーカイブには、 debian サブディレクトリが必要だが、ディレクトリ外にバイナリファイルを含めることもできる ( --include-binaries) オプションを参照のこと)。 引き続き、 debian/patches/debian.series もしくは debian/patches/series にあるパッチがすべて適用される。前者のファイルが使用され、後者が存在しない場合 (もしくはシンボリックリンクの場合)、後者は前者に対するシンボリックリンクに置き換えられる。これは、一連のパッチを管理する上での quilt の使用を単純化する意図である。 dpkg-source は、パッチ適用の際に使用されるオプションが (各行毎にパッチファイル名と 1 つ以上のスペースの後に格納する形で) 明示的に指定されたseries ファイルであっても解析するが、指定されたオプションを無視し、常に patch コマンドの -p1 オプションを指定して適用すべきものとみなす点に留意すること。このようなオプションが指定されていた場合は、警告が出力され、ビルドは恐らく失敗するだろう。 quilt のデフォルトの動作とは相反するが、パッチは fuzz なしで適用されることが期待される。さもなくば、これらのパッチを quilt で更新しない限り、dpkg-source によるパッチ適用時にエラーとなる。 quilt のデフォルトの挙動と同様、パッチによってファイルを削除することもできる。 展開の際にパッチが適用された場合、 .pc/applied-patches ファイルが作成される。 ビルド カレントディレクトリにあるオリジナルの tar アーカイブが、展開の際と同じロジックで一時ディレクトリに展開され、debian ディレクトリが一時ディレクトリからコピーされる。さらに、自動パッチ ( --single-debian-patch の指定により、 debian-changes- version もしくは debian-changes) を除くすべてのパッチが適用される。一時ディレクトリはソースパッケージのディレクトリと比較される。diff が空でない場合、 --single-debian-patch もしくは --auto-commit が指定され、diff が自動パッチの中に保存されていない限り、ビルドは失敗する。自動パッチが作成/削除される場合は、series ファイルと quilt のメタデータからも追加/削除される。- --commit [directory] [patch-name] [patch-file]
- quilt
パッチシステムによって管理されていないローカルな変更に対応するパッチを生成し、
patch-name
というファイル名でパッチシステムに統合する。
patch-name
を指定しなかった場合は、対話的に確認される。
patch-file
が指定された場合は、統合されるローカルな変更に関連するパッチファイル名として用いられる。パッチ統合の際にはエディタが起動され、パッチのヘッダにおけるメタ情報を編集することができる。
- --allow-version-of-quilt-db=version
- dpkg-source が、quilt メタデータのバージョンが指定したものであった場合に、 dpkg-source がそれを確認できない場合でも、ソースパッケージをビルドすることを可能とする。指定された quilt メタデータのバージョンは、 dpkg-source が現在サポートしているバージョン 2 と互換であることが事実上必要である。quilt メタデータのバージョンは .pc/.version に保存されている。
- --include-removal
- 削除されたファイルを無視せず、それらを自動生成されたパッチに含める。
- --include-timestamp
- タイムスタンプを自動生成されたパッチに含める。
- --include-binaries
- debian tar アーカイブに修正されたバイナリをすべて追加し、併せて debian/source/include-binaries にも追加する。これらはその後のビルドの際にデフォルトで追加されるため、このオプションは不要である。
- --no-preparation
- 明らかに適用されていないパッチを適用することによるビルドツリーの準備を行わない。
- --single-debian-patch
- ビルドの際に生成される自動パッチの名前として、debian/patches/debian-changes-version の代わりに debian/patches/debian-changes を使用する。このオプションは、パッケージがバージョン管理システムで維持されているために、パッチセットが安定して生成できない場合特に有用であり、アップストリームと現状との差分を単一のパッチに格納する。このオプションを debian/source/local-options に設定した上で、例えば使用しているバージョン管理システムなどで Debian における変更点を確認するのに最適な方法を説明する debian/source/local-patch-header ファイルを添付しておく。
- --create-empty-orig
- 主たるオリジナルの tar アーカイブについて、作成できない場合や補助のものが存在する場合であっても、空のファイルを自動的に生成する。このオプションは、ソースパッケージに複数のアップストリームのソフトウェアを単に集めたものであり、"主たる" ソフトウェアが存在しない場合に用いられることを想定している。
- --no-unapply-patches, --unapply-patches
- dpkg-source のデフォルトでは、 --before-build フックでパッチが適用された場合、 --after-build フックにおいてパッチを自動適用はしない。これらのオプションにより、パッチ適用の処理を強制的に有効化、無効化することができる。これらのオプションは debian/source/local-options においてのみ有効であるため、生成されたすべてのソースパッケージがデフォルトでは同じ挙動を示す。
- --abort-on-upstream-changes
- 自動パッチが生成された場合に処理を失敗させる。このオプションは、ソースパッケージのビルド以前に、すべての変更点が個別の quilt パッチに適切に保存されることを担保したい場合に使用することができる。このオプションは debian/source/options で指定できない。 debian/source/local-options で指定することは可能である。
- --auto-commit
- 自動パッチが生成された場合に処理を失敗させず、即座に
quilt の series
ファイルに保存する。
- --skip-debianization
- アップストリームのソース上に、debian tar アーカイブの上書き展開を行わない。
- --skip-patches
- 展開の最後に、パッチの適用を行わない。
3.0 (custom) 形式¶
これは特別な形式である。特定のソースパッケージ形式を示すものではなく、任意のファイルを用いてソースパッケージを作成する際に使用する形式である。 ビルドオプション すべてのオプション形式ではない引数は、生成されたソースパッケージに統合するファイルとみなされる。ファイルはあらかじめ存在している必要があり、カレントディレクトリに存在していることが望ましい。最低 1 つのファイルを指定すること。- --target-format=value
- 必須。ソースパッケージの生成に使用する実際の形式を指定する。生成された .dsc ファイルの Format フィールドには、" 3.0 (custom)" ではなく、ここで指定した値が設定される。
3.0 (git) 形式¶
この形式は実験段階のものである。 この形式のソースパッケージは、パッケージのソースを保持する単一の git bundle である、git リポジトリ .git から構成される。shallow git clone がリビジョン保持に使用する .gitshallow ファイルも含まれる場合がある。 展開 この git bundle は git リポジトリとしてターゲットディレクトリに複製される。gitshallow ファイルがある場合は、複製された git リポジトリ内に `.git/shallow` としてインストールされる。 デフォルトで、新しいリポジトリはオリジナルのソースがチェックアウトされたものと同じブランチとなっている。(通常は "master" だが、それに限らない。) それ以外のブランチは `remotes/origin` から利用することができる。 ビルド 先に進む前に、無視すべきもの以外でコミットされていない変更がないことを担保するためのチェックが行われる。 git リポジトリの bundle を生成する際には git-bundle(1) が使用される。デフォルトで、リポジトリ内のすべてのブランチとタグが bundle に含められる。 ビルドオプション- --git-ref=ref
- git bundle に含める git ref を指定する。このオプションにより、すべてのブランチとタグを含めるというデフォルトの挙動が無効となる。これは複数回指定してもよい。 ref は、git bundle に含めるブランチ名もしくはタグ名となるが、 git-rev-list(1) に渡すことが可能な任意の引数を指定してもよい。一例として、master ブランチのみを含めたい場合は --git-ref=master と指定する。private ブランチ以外すべてのタグとブランチを含めたい場合は、 --git-ref=--all --git-ref=^private と指定する。
- --git-depth=number
- shallow clone を作成する。作成の際、ヒストリを指定したリビジョン数に切り詰める。
3.0 (bzr) 形式¶
この形式は実験段階である。これは bzr リポジトリを含む単一の tar アーカイブを生成する。 展開 tar アーカイブを展開した上で、現在のブランチをチェックアウトするために bzr が使用される。 ビルド 先に進む前に、無視すべきもの以外でコミットされていない変更がないことを担保するためのチェックが行われる。 その後、ソースディレクトリ内のバージョン管理システム固有のファイルが一時ディレクトリにコピーされる。一時ディレクトリが tar アーカイブにされる前に、領域を節約するために、様々なクリーンアップ処理が行われる。警告とエラー¶
no source format specified in debian/source/format¶
debian/source/format ファイルは、ソース形式を指定するために、常に存在しているべきである。後方互換性のため、ファイルが存在していない場合は、"1.0" 形式であると見なされるが、これに依存すべきではない。将来的には、dpkg-source が修正されて、ファイルが存在していないと処理が失敗するようになるかもしれない。the diff modifies the following upstream files¶
ソース形式として "1.0" を使用する場合、アップストリームのファイルを直接修正することは通常勧められない。これは変更点が隠蔽され、diff.gz ファイル内でドキュメント化されないままとなってしまうためである。変更点については、 debian ディレクトリ内にパッチとして保存し、ビルド時にこれを適用することが勧められる。複雑化を避ける意味では、この処理が組み込まれている "3.0 (quilt)" 形式を使用してもよい。cannot represent change to file¶
アップストリームのソースに対する変更は、通常パッチファイルに保存されるが、パッチでは、すべての変更を保持できるわけではない。パッチは平文テキストファイルの内容しか変更できない。これ以外の形式のファイルの内容を変更しようとすると (例えば普通のファイルをシンボリックリンクやディレクトリに変更するなど) 、このエラーメッセージが表示される。newly created empty file file will not be represented in diff¶
パッチファイルでは空ファイルを作成することができないため、この変更はソースパッケージに保持されない。そのため警告が表示される。executable mode perms of file will not be represented in diff¶
special mode perms of file will not be represented in diff¶
パッチファイルにファイルのパーミッション情報は保存されないため、パーミッションの変更はソースパッケージに保持されない。そのため警告が表示される。ファイルフォーマット¶
debian/source/format¶
このファイルはソースパッケージのビルドの際に使用される形式を記載した 1 行からなる (指定可能な形式は前述のとおり)。前後に空白を入れてはならない。debian/source/include-binaries¶
このファイルには、debian tar アーカイブに含まれるバイナリファイルが (1 行に 1 ファイルずつ) リストされる。前後の空白は削除される。"#" で始まる行はコメント行と見なされスキップされる。空行も無視される。debian/source/options¶
このファイルには、 dpkg-source -b や dpkg-source --print-format が実行される際に自動的に付加されるコマンドラインオプションを長いオプション形式でリストしたものが含まれる。このファイルは、 --compression や --compression-level といったオプションを指定するのに適している。 各オプションは別々の行に記載する。空行や "#" から始まる行は無視される。記載の際に、先頭の "--" は省略する必要がある。また短いオプションは指定できない。"=" の前後に空白を入れることは可能である。また値を囲むためにクオートを行うこともできる。以下にファイルへの設定例を示す:# let dpkg-source create a debian.tar.bz2 with maximal compression
compression = "bzip2"
compression-level = 9
# use debian/patches/debian-changes as automatic patch
single-debian-patch
# ignore changes on config.{sub,guess}
extend-diff-ignore = "(^|/)(config.sub|config.guess)$" 注記: format オプションをこのファイルで設定することはできない。代わりに debian/source/format を使用すること。
debian/source/local-options¶
ファイルが生成されたソースパッケージに含まれない点を除き、 debian/source/options とまったく同等である。これはメンテナ固有の設定や、ソースパッケージを管理しているバージョン管理システム固有の設定を保持する際に有用である。debian/source/local-patch-header¶
debian/source/patch-header¶
"2.0" もしくは "3.0 (quilt)" 形式で生成される自動パッチのトップに配置する、フリーフォーマットのテキスト。 local-patch-header は生成されたソースパッケージに含まれないが、 patch-header は含まれる。debian/patches/series¶
このファイルには、アップストリームのソースパッケージに対して適用すべきすべてのパッチが (適用順序に従って) 並べられる。パッチ名前後の空白は削除される。"#" で始まる行はコメント行と見なされスキップされる。空行も無視される。その他の行は、( debian/patches/ ディレクトリからの相対パスによる) パッチのファイル名から始まり、これは最初の空白文字もしくは行末まで続く。それに続き quilt のオプションを任意で設定することができる。これは最初に空白文字に続いて (それ以降が行末までコメントであることを示す) "#" が現れた位置もしくは行末まで続く。バグ¶
標準の出力フィールドの設定と比較すると、フィールドの上書きが発生する箇所は混乱を引き起こす。関連項目¶
dpkg-deb(1), dpkg(1), dselect(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>.2012-05-04 | Debian Project |