
1. アーカイブの圧縮形式として .gz しか使えない。
例えば upstream が bzip2 で配布されている場合でも gzip で圧縮しなおす、 もしくは tarball in tarball
*
9
などの形式にする、などです。後述の CDBS を使用する場合には tarball in tarball 用のルールとして
tarball.mk が用意されています。
2. upstream のソースが複数のアーカイブから構成される場合が面倒。
前述の tarball in tarball で対応しています。
3. パッケージメンテナの作成したパッチが全部単一の patch に。
diff.gz は debian 以下のファ イルが全て単一のファ イルになっ ています。 debian/control や
debian/rules だけではなく、 upstream のソースへのパッ チも全て一つのファ イルになっ ています。
そこで、 upstream のソースへのパッ チは debian/patches 以下に意味のある単位で分割して配置し、
パッケージ作成の際にパッチの apply/unapply を行なうことにしています。このためのツールとしては
dpatch や quilt
*
10
があります。また、 CDBS にはパッチの apply/unapply をするためのルールとし
て patchsys-quilt.mk, dpatch.mk, simple-patchsys.mk が用意されていますし、 dh には--with
quilt というオプションが用意されています。ちなみに、各パッチの先頭にその意図を記述するタグを追加し
ておくことが推奨されています
*
11
。
4. diff で表現されるので (画像などの) バイナリが置きにくい。
uuencode/uudecode で diff が取れる形式にしておくなどして対応します。
というわけで、これまでの source format でも問題点について対応はできます。しかしながら、こういった特殊な操作
を行なうことなく問題点を解決するための新たなフォーマットとして、新たに 3.0 (quilt) と 3.0 (native) が制定さ
れました
*
12
。
4.1.2 3.0(quilt) と 3.0(native)
3.0 (quilt) は以下のファイル群で構成されます:
.orig.tar.ext
upstream のソース。複数のソースからなる場合には基本となるソースにこの名前をつける。 ext は圧
縮の拡張子であり、 gz, bz2, lzma, xz が使用可能。
.orig-component1.tar.ext
upstream が複数のソースから構成される場合に作成する。-componet はソースの名前に対応してメン
テナが適宜名付ける。
.debian.tar.ext
debian ディレクトリの中身。 ext は圧縮の拡張子であり、 gz, bz2, lzma, xz が使用可能。 1.0 の
diff.gz から.tar.ext になり、全てが混在した単一のパッチではなくなった。
.dsc
パッケージに関する情報。
また 3.0 (native) は 1.0 での Debian 固有パッケージに対応しており、.orig.tar.ext と .dch ファイルからなり
ます。
これらの変更により 1.0 での問題点は以下の様に解決されました。
*
9
.orig.tar.gz を展開するとディレクトリ内に upstream の bzip2 が配置される。ビルドする際に tar を展開してからビルドする
*
10
こう書くと語弊があるかもしれませんが、 quilt は Debian 固有のツールではありません。一方で dpatch は「 patch maintenance system
for Debian source packages」とあるように Debian 固有のツールです。
*
11
http://dep.debian.net/deps/dep3/ 面倒なので佐々木はサボリがちです。すいません。
*
12
http://wiki.debian.org/Projects/DebSrc3.0 ちなみに 2.0 はどういう状況知りません. だれかご存知ですか?
8