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
star
100% 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