2011年7月15日 (金曜日)

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
	
Junichi Uekawa

$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $