dpkg は、主に Debian GNU/Linux を対象としています。 しかし、他のシステム上でも動くでしょうし、 他のシステムで機能するようにもできるでしょう。
つまり、そのスクリプトの実行が成功しても、失敗しても、 そのスクリプトが再び呼び出された時に爆発せず、 ただ、全てがあるべき状態であるようになるということです。
古いパッケージもインストールできるように、今のところ dpkg は Architecture フィールドを要求しません。しかし、この Architecture フィールドは、全てのパッケージに存在しなければなりません。
これは、作成されるコントロールファイルが、正しい許可属性を持つように するためです。
引数となる実行可能ファイルは、それらの作られるソースツリーのある場所や、 バイナリーパッケージが作られる前に仮インストールされる構築ツリーの ある場所で指定することもできます。
changelog の著者がパッケージの保守担当者でもある場合、 パッケージの全ての変更に対して changelog を使わないようにすることも できますが、パッケージや元のソースの保守担当者が違う人になった時には、 名前を変更しなければなりません。
これは 822-date プログラムによって作成されます。
files.new
は dpkg-gencontrol と
dpkg-distaddfile が一時的なファイルとして使います。
エラーが起こったときに問題のあるファイルを残しておかないようにするため、
dpkg-gencontrol と dpkg-distaddfile は、
ファイル名をかえる前に新しいバージョンの files
を
ここに書き出します。
現在、ソースパッケージの構築中にハードリンクは検出されませんが、 ソースパッケージの展開時にのみ検出されます。
将来のある時点でハードリンクが認められるかもしれませんが、 それにはとても多くの作業が必要となります。
setgid されたディレクトリーは認められています。
ファイル名の変更については特別扱いしません。 つまり、古いファイルの削除(dpkg-source によって警告が発せられるか、 そうでなければ無視されます。)と新しいファイルの作成として 扱われます。
@
:
=
%
_
(アットマーク、コロン、等号、パーセント、アンダースコア) の使用は、
以前は認められていて、パッケージファイルの名前として、
現在でも受け付けられますが、新しいパッケージでは使ってはいけません。
これはバグです。
これは、実際には dpkg の中で
gcc --print-libgcc-file-nameを呼び出し、 その出力の構文解析をして分解し、表の中の GCC の設定から CPU の型を みつけます。これは、クロスコンパイルの場合にも動作するように するためのものです。
バージョン番号が指定される場合には、通常、パッケージ名の後に 空白が入ります。
それぞれのコンマの後には空白を入れるのが決まりです。
つまり、.dsc
でない部分のことです。
問題のうちの一部は、おそらく、dpkg 中にあるバグによるものです。
バージョン 0.93.23 か、それより新しいもの。
現行バージョン(1.2.4)の dpkg には、この領域中のバグがあり、 依存関係の問題のうちのいくらかを無視してしまいます。