10:20:42 # Life pristine-tar. 近年、Debian のソースパッケージの管理の一般的な体制は 任意のVCS(Svn、Git、Mercurial、Bazaarなど)を使ってソースコードを管理しつつ、Debian Project としてのソースレポジトリには旧来の方法でエキスポートするという運用になっている。 Dpkgのソースパッケージ形式をざっくりといってしまうと、アップストリーム(開発元)のソースコードを orig.tar.gzとして、それに対してのDebianでの差分をdiff.gz(もしくはv3ではdebian.tar.gz)として配布するという形式になっている。 Sourcesファイルからdscファイルのハッシュがわかり、dscファイルからorig.tar.gzおよびdiff.gzのハッシュがわかるため、Sourcesファイルに対してのReleaseファイルの署名を確認すればDebian Project のソースファイルだということが確認できるという仕組みになっている。 ここで、注意するべきは、orig.tar.gzのハッシュ値はアップストリームのバージョンについて一意である必要がある点。
tar.gzというファイル形式は、tarでアーカイブを作成する際とgzで圧縮する際にいろいろなオプションなどがあるので、内容が変わりうる。 Gitでソースを管理している場合に、orig.tar.gzを管理する際のアプローチとして以下の三つが(多分)ある。
で、git-buildpackageがサポートしているっぽい pristine-tar をながめるわけですよ。あとで読む。
挙動を確認するには、まぁ、md5sum コマンドとか使えばいいのかな。
$ apt-get source yatex # dsc ファイルに書いてあるハッシュの値とmd5sum 等が一致することを確認。 $ grep orig.tar.gz yatex_1.74+dfsg1-1.dsc bb57f463cda40f7d24fd2a5bcaba0a385f91ce39 362256 yatex_1.74+dfsg1.orig.tar.gz 190d0ff572f50191c5c48b3707aa1d7f2ce370cf79bc4122b9f67cfd0ea28926 362256 yatex_1.74+dfsg1.orig.tar.gz ea8123d9972a2ac8c9a41633dd2a03cb 362256 yatex_1.74+dfsg1.orig.tar.gz $ md5sum yatex_1.74+dfsg1.orig.tar.gz ea8123d9972a2ac8c9a41633dd2a03cb yatex_1.74+dfsg1.orig.tar.gz $ sha1sum yatex_1.74+dfsg1.orig.tar.gz bb57f463cda40f7d24fd2a5bcaba0a385f91ce39 yatex_1.74+dfsg1.orig.tar.gz $ sha256sum yatex_1.74+dfsg1.orig.tar.gz 190d0ff572f50191c5c48b3707aa1d7f2ce370cf79bc4122b9f67cfd0ea28926 yatex_1.74+dfsg1.orig.tar.gz
$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $