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.