Unter welchen Umständen funktioniert gunzip & tar xf, aber tar xzf schlägt fehl?


9

Zur Veranschaulichung: Ich habe die LEDA-Bibliothek von der Website des Unternehmens heruntergeladen . Die Verwendung von tar -xzf schlägt fehl:

$ 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 gefolgt von tar -xf funktioniert jedoch einwandfrei:

$ 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

Kann mir jemand sagen, warum das so sein könnte? - Ich möchte, dass der Standardbefehl tardie ganze Zeit funktioniert.


Welches Betriebssystem? IIRC gibt es Unixe mit einem tar, das -z nicht implementiert --z
Bananguin

@ user1129682 Von der Website des Unternehmens sieht es so aus, als hätte es nur Optionen für Linux und Win ...
MattDMo

Wenn Ihr Teer z nicht unterstützt, verwenden Sie stattdessen ein Rohr: gunzip < archive.tar.gz | tar -xsollte überall funktionieren.
Frostschutz

Wenn Ihre Kopie von tarkeine Gunzip-Dekomprimierung unterstützt, können Sie stattdessen Folgendes tun : gunzip -c $file | tar -x. Es ist üblich, dies in eine Shell-Funktion zu packen.

1
Ich habe gerade dieses Archiv heruntergeladen und tar xzfgebe tatsächlich einen Fehler unter Debian GNU / Linux (das natürlich gnutar verwendet). Seltsam.
Derobert

Antworten:


12

Was passiert zu sein scheint, ist, dass sie das Archiv doppelt komprimiert haben.

Wenn Sie fileIhre gunzip-Datei ausführen, finden Sie immer noch ein gzip-Archiv. Und wenn Sie es umbenennen, um wieder .gz zu haben, können Sie es erneut mit einem Gunzip versehen.

Es scheint, dass gnu tar kürzlich die -zOption automatisch hinzufügt , vorausgesetzt, die Eingabe ist eine Datei. Deshalb funktioniert es ohne die -zOption, nachdem Sie sie bereits gunzipeinmal ausgeführt haben. Tar hat sie automatisch hinzugefügt.

Dieses Verhalten wird auf der Infoseite dokumentiert:

"Das Lesen des komprimierten Archivs ist noch einfacher: Sie müssen keine zusätzlichen Optionen angeben, da GNU` tar 'sein Format automatisch erkennt. [...] Der Formaterkennungsalgorithmus basiert auf "Signaturen", einer speziellen Byte-Sequenz in der Dateianfang, der für bestimmte Komprimierungsformate spezifisch ist. "

Das ist aus §8.1.1 "Erstellen und Lesen komprimierter Archive".


Sehr gut entdeckt! Bestätigt mit allen Kombinationen von Gunzip und Teer.
Michael Schubert
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.