0

ビルド スクリプトの場合、特定のバージョンのソース パッケージを操作する必要があります。大きなソース アーカイブを含める必要がないように、スクリプトはチェックサム (SHA1) を保存し、自動的にダウンロードします。これは、次のような公式リリースでは非常にうまく機能します。

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 アーカイブの先頭付近のタイムスタンプにはわずかな違いがあります。

これらの数バイトにより、ダウンロードごとにチェックサムが異なるため、スクリプトはダウンロードされたソース アーカイブの整合性を保証できなくなります。

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

4

2 に答える 2

2

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

代わりtail --byte +10 $archive | sha1sumにいいかもしれません

tail --byte +10 $archive | openssl sha1sha1sum がない環境でも役立つ可能性があります

于 2010-12-08T16:59:22.300 に答える
2

タールzcat $archive |sha1sumが安定していればそれでいい。それ以外の場合は、git (おそらく --depth 0 を使用) を使用して正しい sha1 をチェックアウトするか、安定したアーカイブを再構築できる元の tarデルタを保存することができます。

于 2010-11-28T10:39:36.530 に答える