
gccミラーサイトからダウンロードしたgcc-4.9.0.tar.gzを解凍しようとしています。gunzipする前に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とuntarを別々に試しました
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 ファイルを取得しています。何が取得されるか見てみましょう...
OK、ここに 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
答え2
gtar を使用する必要があります。これは通常、パッケージ SUNWgtar とともにプリインストールされています。
gzip -dc gcc-4.9.0.tar.gz | /usr/sfw/bin/gtar -xf -
echo $?
0
ネイティブ Solaris のパッチ未適用の tar では、GNU tar で作成されたファイルで問題が発生する可能性があります。理由については、@schily の回答を参照してください。