gunzipおよびtar xfはどのような状況で機能しますが、tar xzfは失敗しますか?


9

ポイントを説明するために、私は同社のWebサイトからLEDAライブラリをダウンロードしました。それにtar -xzfを使用すると失敗します。

$ tar -xzf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz 
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

ただし、gunzipの後にtar -xfを続けても問題なく機能します。

$ gunzip LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
$ tar -xf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar
# no error

なぜこれが起こり得るのか誰かに教えてもらえますか?-標準tarコマンドを常に機能させたいです。


どのオペレーティングシステム?IIRCにはtar-zを実装していないUnixがあります
Bananguin 2013

@ user1129682同社のサイトから、LinuxとWinのオプションしかないようです...
MattDMo

tarがzをサポートしていない場合は、代わりにパイプを使用してgunzip < archive.tar.gz | tar -xください。どこでも機能するはずです。
frostschutz

のコピーがtargunzip解凍をサポートしていない場合は、代わりに以下を実行できますgunzip -c $file | tar -x。それをシェル関数でラップするのが一般的です。

1
私はそのアーカイブをダウンロードしたばかりtar xzfで、Debian GNU / Linux(もちろんgnutarを使用しています)で実際にエラーが発生します。奇数。
derobert 2013

回答:


12

起こったように見えるのは、彼らがアーカイブを二重に圧縮したことです。

filegunzipされたファイルを実行すると、まだgzipアーカイブが見つかります。また、名前を.gzに変更すると、もう一度gunzipできます。

-z入力がファイルであれば、最近gnu tarが自動的にオプションを追加するようです。だから、一度-z実行したらオプションなしで機能するのはそのgunzipためです。tarが自動的に追加します。

この動作は、情報ページから文書化されています。

「圧縮アーカイブの読み取りはさらに簡単です。GNU `tar 'がそのフォーマットを自動的に認識するため、追加のオプションを指定する必要はありません。[...]フォーマット認識アルゴリズムは、「署名」、つまり特定の圧縮形式に固有のファイルの先頭。」

それは§8.1.1「圧縮アーカイブの作成と読み取り」からです。


非常によく発見されました!gunzipとtarのすべての組み合わせで確認されました。
Michael Schubert
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.