2010-11-28 5 views
0

ビルドスクリプトでは、特定のバージョンのソースパッケージで作業する必要があります。大きなソースアーカイブを含める必要がないために、スクリプトはチェックサム(SHA1)を保存して自動的にダウンロードします。これは、このような自動生成されたTarGZアーカイブの安定したチェックサムを作成するには?

http://download.videolan.org/pub/videolan/libdca/0.0.5/libdca-0.0.5.tar.bz2

しかし、いくつかのパッケージは公式リリースを提供していないとして、公式のリリースのために非常に適していますので、私はバージョン管理システムから、十分にテストされたバージョンをダウンロードしてください。例えば、GitwebはTarGZアーカイブをダウンロードするために便利な「スナップショット」機能を提供します。

http://git.videolan.org/?p=libbluray.git;a=snapshot;h=cf9ee593f;sf=tgz

残念ながら、このURLは、各リクエストに応じてわずかに異なるファイルを返します。同じ方法で常にgzipで圧縮された同じtarアーカイブを常に返しますが、gzipアーカイブの先頭近くにはタイムスタンプに小さな違いがあります。

これらの数バイトのため、ダウンロードごとにチェックサムが異なるため、スクリプトはダウンロードしたソースアーカイブの整合性を失うことはありません。

この問題を回避するにはどうすればよいですか?

答えて

2

ちょうどzcat $archive |sha1sumタールが安定していればそれです。さもなければ、git(おそらく--depth 0)を使用して正しいsha1をチェックアウトするか、または安定したアーカイブを再構築できるようにpristine-tarデルタを保存することができます。

2

zcatソリューションは適切ですが、zcatがCPUを何の役にもつかないと心配している場合は、タイムスタンプを含むgzipアーカイブの先頭に10バイトのヘッダーをジャンプできます(http://www.gzip.org/zlib/rfc-gzip.html#file-format参照)。残りをハッシュします。

のでtail --byte +10 $archive | sha1sumは、あなたがSHA1SUM

を持っていないenvironementに有用である可能性 tail --byte +10 $archive | openssl sha1また代わり

いいことができ

関連する問題