Solaris 10でmd5.sumを使用して.tar.gzを正しく抽出する方法

Solaris 10でmd5.sumを使用して.tar.gzを正しく抽出する方法

gccミラーサイトの1つからダウンロードしたgcc-4.9.0.tar.gzを抽出しようとしています。圧縮する前にmd5署名を確認するために、次のことを行いました。

digest -a md5 -v gcc-4.9.0.tar.gz

これは

md5 (gcc-4.9.0.tar.gz) = fe8786641134178ecfeee2dc7644a0d8

これは、ソースからダウンロードしたディレクトリのmd5.sumと一致します。

それから私はそうでした。

gzip -dc gcc-4.9.0.tar.gz | tar xvf -

抽出が始まったがすぐに終了

 tar: directory checksum error

私もこのように圧縮と解凍を別にしてみました

 gunzip gcc-4.9.0.tar.gz

それから

tar -xvf gcc-4.9.0.tar

ただし、最終的にチェックサムエラーが発生します。

この問題をどのように解決できますか?

ベストアンサー1

tar アーカイブに欠陥があるか、標準以下のようです。

アーカイブをbz2イメージにインポートしますbzip2 -d gcc-4.9.0.tar.bz2 < tar tvf -

解凍されたアーカイブにmd5チェックサムがあります: 6b8f599053a52e7c2076485d1ad3e747。

今は.gzファイルを受け取っています。何を得るのか見てみましょう...

いいですね。 gcc-4.9.0.tar.gz fe8786641134178ecfeee2dc7644a0d8 の md5 チェックサムはご覧のようなものです。

通常、問題はアーカイブを生成するときに発生しますが、gtarまれにdirectory checksum error

何が起こっているのかをよりよく理解したい場合は、使用することをお勧めしtartestますstar

以下から最新情報を入手してくださいschilytools

http://sourceforge.net/projects/schilytools/files/

プログラムをコンパイルして実行しますtartest/OBJ/*/tartest < gcc-4.9.0.tar

私はこれをし、その理由は、アーカイブがtarヘッダーでGNUベンダー固有の「ファイルタイプ」「L」を使用していたことに気づきました。

重要: GNU tar が半分のみに準拠しているか、少なくとも半分のエラーがなかった場合、問題のファイル名が POSIX.1-1988 100+255 名前スキームに完全に準拠しているため、この問題は発生しません。人々がGNU tarの使用を避けるべき理由に関するもう1つのヒントがあります。

を使用することをお勧めしますstar

のすべての機能は、star属性記述構造によって完全に制御されます。アーカイブ形式を指定すると、star他のアーカイブ形式に関連付けられたアーカイブコンテンツは作成されません。

たとえば、電話する場合:

star -c -f out.tar -Hustar somedir

star100% POSIX.1-1988 アーカイブ形式が使用され、このアーカイブ形式に適合しないファイルがある場合は、標準以外のstar方法でファイルをアーカイブする代わりに警告が表示されます。

注:Sunがこのベンダー固有の機能のサポートを追加した変更セットは次のとおりです。

changeset:   11995:caff1bd711f5 
user:        Rich Burridge <[email protected]> 
date:        Thu Mar 25 13:21:39 2010 -0700 

description: 
        6202362 Solaris tar can't unpack files created with GNU tar 

modified: 
   usr/src/cmd/tar/tar.c 

おすすめ記事