書式
dpkg-source [option...] command説明
dpkg-source は、Debian ソースアーカイブの作成、展開を行う。これらの command では複数のオプションを 1 つに結合することはできず、オプションの値をオプション名から分離した引数として指定することもできない。
コマンド
- -x filename.dsc [output-directory]
-
ソースパッケージを展開する。Debian ソースコントロールファイル (.dsc) 名として、オプション形式ではない引数を 1
つ指定する必要がある。それに続きオプション形式ではない引数を指定することで、ソースパッケージの展開先となるディレクトリを指定することができる。このディレクトリは既存であってはならない。ディレクトリが指定されなかった場合、ソースパッケージは、現在のワーキングディレクトリ以下の
source-version というディレクトリに展開される。
dpkg-source は制御ファイルからソースパッケージの設定を行うためのファイル名を取得する。これらは .dsc ファイルと同じディレクトリに配置されているものとみなされる。
展開されたパッケージのファイルには、ファイルやディレクトリを単に作成したときに設定されるであろうものと同様のパーミッションや所有者が設定される。ディレクトリ及び実行ファイルのパーミッションは 0777 に、普通のファイルは 0666 に設定されるが、展開したユーザの umask の影響を受ける。親ディレクトリが setgid されていた場合、展開されたディレクトリもそれに従い、ファイルやディレクトリには、グループの所有者情報が引き継がれる。
ソースパッケージが標準以外の形式 (現在のところ "1.0" 以外のすべての形式を意味する) を使用している場合、形式の名称は debian/source/format に格納され、以降のソースパッケージのビルドでは、デフォルトで同じ形式が使用される。
- -b directory [format-specific-parameters]
-
ソースパッケージをビルドする。先頭のオプション形式ではない引数は Debian 化されたソースツリー (debian
サブディレクトリとオリジナルのファイルに対する変更物)
の格納されたディレクトリ名になる。パッケージのビルドに使用されるソースパッケージ形式によって、この他の引数が存在する場合もあるだろう。
dpkg-source は、コマンドライン引数の --format で指定した形式、debian/source/format で指定した形式、"1.0" の順で形式を確認し、最初に確認できた形式にに基づいてソースパッケージをビルドする。"1.0" は廃止予定であり、将来的には削除されるため、常に debian/source/format でソースパッケージ形式を指定するようにすべきである。ソースパッケージ形式についての詳細な解説は、ソースパッケージ形式セクションを参照のこと。
- --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 オプションを複数回指定した場合、最後に指定したものしか有効にならない。
これは diff に含まれている無関係なファイルを除外する際に非常に有用である。例えばバージョン管理システムでソース管理しており、ソースパッケージのビルドにチェックアウトしたファイルを使用したい場合に、無関係なファイルやディレクトリ (例えば CVS/, .cvsignore, .svn/ など) を除外したい場合などが該当する。これらはデフォルトの正規表現でほぼ網羅されているが、デフォルトを変更したい場合は、正規表現はパスの任意の箇所にマッチするため、ファイル名の先頭やフルパスにマッチさせたい場合は、必要なアンカー ('(^|/)' や '($|/)') を自分で指定する必要がある点に留意して行うこと。
- --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 ディレクトリをスキップする。複数の除外パターンを指定するために、このオプションを複数回指定してもよい。
-I を指定することで、デフォルトの --exclude オプションが設定され、制御ファイルと一般的なバージョン管理システムのディレクトリ、バックアップファイル、スワップファイル、libtool の出力ディレクトリが除外される。
注記: -i と -I は類似の目的で用いられるが、文法と意味はまったく異なっている。-i は複数回指定することができず、各ファイルの相対パス全体をマッチ対象として perl 形式の正規表現により指定する。-I は複数回指定することができ、シェルのワイルドカードによるファイル名パターンにより指定する。パターンは相対パス全体に適用されるが、パスの個々の部分毎にチェックが行われる。tar の --exclude オプションの指定は、若干面倒である。網羅的な記述についてはhttp://www.gnu.org/software/tar/manual/tar.html#wildcards を参照のこと。
両オプションのデフォルトの正規表現やパターンについては、--help コマンドの出力で確認できる。
一般的な展開オプション
- --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 のみ (この形態を ネイティブ と称する) が含まれる。展開
ネイティブパッケージの展開は、単一の tar アーカイブをターゲットディレクトリに単に展開するだけである。非ネイティブなパッケージの展開は、先に .orig.tar.gz を展開した上で、.diff.gz ファイルに含まれるパッチを適用する。パッチされたファイルのタイムスタンプは、ソースパッケージを展開した時刻に再設定される (これにより、自動生成されたファイルにパッチする際に、タイムスタンプが逆転してしまうことによる問題の発生を回避する)。diff により新しいファイルを作成することもできる (debian ディレクトリ自体も、これにより作成される) が、ファイルを削除することはできない (空ファイルはそのまま残される)。
ビルド
ネイティブパッケージのビルドは、ソースディレクトリに単一の tar アーカイブを作成するだけである。非ネイティブパッケージのビルドは、オリジナルの tar アーカイブを ".orig" ディレクトリに展開し、 directory にあるソースパッケージと .orig ディレクトリを比較して .diff.gz ファイルを再生成することにより行われる。
- ビルドオプション (-b と併用):
2 番目のオプションでない引数が存在する場合は、オリジナルのソースディレクトリか tar ファイル名を意味する。ただし、パッケージが Debian 固有のものであり、Debian 化するための diff が存在しない場合は空文字列となる。2 番目の引数が存在する場合、dpkg-source は -sX 引数に応じて、オリジナルのソース tar ファイル package_upstream-version.orig.tar.gz もしくはオリジナルのソースディレクトリ directory.orig を検索する。
-sa, -sp, -sk, -su, -sr は、既存の tar ファイルやディレクトリを上書きしない。上書きさせたい場合は、代わりに -sA, -sP, -sK, -sU, -sR を使用すること。
- -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
- オリジナルのソースをカレントディレクトリにコピーさせず、展開もさせない。カレントディレクトリに存在するオリジナルのソースツリーは削除される。
-sX オプションは相互排他である。複数回指定された場合、最後に指定されたものが使用される。
- --skip-debianization
- アップストリームのソースのトップに存在する Debian 化の diff を適用しない。
2.0 形式
wig&pen という名称でも知られている。この形式は広範な使用を推奨されておらず、"3.0 (quilt)" が代替している。wig&pen は新世代のソースパッケージ形式の最初の仕様である。この形式の挙動は、明示的なパッチ一覧を使用しない点を除き、"3.0 (quilt)" 形式と同等である。perl 形式の正規表現 [\w-]+ にマッチする debian/patches/ に存在するすべてのファイルは、適切なパッチである必要がある。これらは展開時に適用される。
新しいソースパッケージをビルドする際にアップストリームのソースに対する変更が発生した場合、zz_debian-diff-auto という名前のパッチとして保存する。
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 のメタデータからも追加/削除される。
バイナリファイルに対する変更は diff では表現できないため、メンテナが修正されたバイナリファイルを debian tar アーカイブに (debian/source/include-binaries に格納することで) 含めておくことを熟考の上決定しない限り、処理の失敗を引き起こす。debian サブディレクトリ内にバイナリファイルがあった場合も、debian/source/include-binaries によりホワイトリスト設定されていない限り、ビルドの失敗を引き起こす。
設定を行うことで、debian tar アーカイブを生成する際に、更新された debian ディレクトリと修正されたバイナリのリストが使用される。
自動的に生成された diff には、多くの一時ファイル (デフォルト値は --help 出力の -i オプションを参照のこと) やバージョン管理システム固有のファイルやディレクトリは含まれない。特に quilt が使用する .pc ディレクトリは、自動パッチの生成時には無視される。
dpkg-source --before-build (および -b) は、series ファイルにリストされているすべてのパッチが適用され、パッケージのビルドが常にすべてのパッチが適用された状態で行われることを担保する。これは、適用されなかったパッチ (series ファイルにリストされているが、.pc/applied-patches にリストされていないもの) を確認することで行われる。これらのうち、最初のパッチがエラーなく適用可能であれば、残りのすべても適用する。この挙動を抑止する場合は、--no-preparation オプションを使用すること。
変更の記録
- --commit [directory] [patch-name] [patch-file]
-
quilt パッチシステムによって管理されていないローカルな変更に対応するパッチを生成し、patch-name
というファイル名でパッチシステムに統合する。patch-name を指定しなかった場合は、対話的に確認される。patch-file
が指定された場合は、統合されるローカルな変更に関連するパッチファイル名として用いられる。パッチ統合の際にはエディタが起動され、パッチのヘッダにおけるメタ情報を編集することができる。
patch-file の指定は、予め生成されたパッチファイルを用いたビルドに失敗した際に有用であり、そのため、指定されたファイルは統合後に削除される。パッチファイルに含まれている変更点は、ツリーに予め適用されている必要があり、パッチによって修正されるファイルは、その他の記録されていない変更が行われていてはならない点にも留意すること。
パッチの生成により、バイナリファイルの変更が必要と認識された場合、それらは自動的に debian/source/include-binaries に追加されるため、最終的に debian tar アーカイブに追加される (dpkg-source --include-binaries -b と似た動作となる)。
ビルドオプション
- --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 が修正されて、ファイルが存在していないと処理が失敗するようになるかもしれない。"1.0" 形式は既に推奨される形式から外れており、新しい形式 ("3.0 (quilt)", "3.0 (native)") のいずれかを使用すべきであるが、dpkg-source は、これを自動的には行わない。古い形式の使用を継続する場合、debian/source/format 中で "1.0" を明示すべきである。
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 を使用すること。