Dans quelles circonstances gunzip & tar xf fonctionne-t-il mais tar xzf échoue?

9

Pour illustrer ce point: j'ai téléchargé la bibliothèque LEDA sur le site Web de l' entreprise . L'utilisation de tar -xzf dessus échoue:

$ 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

Cependant, gunzip suivi de tar -xf fonctionne très bien:

$ 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

Quelqu'un peut-il me dire pourquoi cela pourrait être? - Je voudrais que la tarcommande standard fonctionne tout le temps.

Michael Schubert
la source
Quel système d'exploitation? IIRC il y a des Unix avec un tarqui n'implémente pas -z
Bananguin
@ user1129682 Sur le site de l'entreprise, il semble qu'il ne dispose que d'options pour Linux et Win ...
MattDMo
Si votre tar ne prend pas en charge z, utilisez plutôt un tuyau: gunzip < archive.tar.gz | tar -xdevrait fonctionner partout.
frostschutz
Si votre copie tarne prend pas en charge la décompression gunzip, vous pouvez effectuer les opérations suivantes à la place: gunzip -c $file | tar -x. Il est courant d'envelopper cela dans une fonction shell.
1
Je viens de télécharger cette archive, et tar xzfdonne en effet une erreur, sur Debian GNU / Linux (qui utilise bien sûr gnutar). Impair.
derobert

Réponses:

12

Ce qui semble s'être produit, c'est qu'ils ont double compressé l'archive.

Si vous exécutez filevotre fichier gunzip, vous trouverez que c'est toujours une archive gzip. Et si vous le renommez pour avoir à nouveau .gz, vous pouvez le refermer.

Il semble que récemment gnu tar ajoutera automatiquement l' -zoption, à condition que l'entrée soit un fichier. C'est pourquoi il fonctionne sans l' -zoption après que vous l'avez déjà exécuté gunzipune fois, tar l'a ajouté automatiquement.

Ce comportement est documenté, à partir de la page d'informations:

"La lecture des archives compressées est encore plus simple: vous n'avez pas besoin de spécifier d'options supplémentaires car GNU` tar 'reconnaît automatiquement son format. [...] L'algorithme de reconnaissance de format est basé sur des "signatures", une séquence d'octets spéciale dans le début de fichier, spécifiques à certains formats de compression. "

Cela provient du §8.1.1 «Création et lecture d'archives compressées».

derobert
la source
Très bien repéré! Confirmé avec toutes les combinaisons de gunzip et de goudron.
Michael Schubert