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 tar
commande standard fonctionne tout le temps.
tar
qui n'implémente pas -zgunzip < archive.tar.gz | tar -x
devrait fonctionner partout.tar
ne 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.tar xzf
donne en effet une erreur, sur Debian GNU / Linux (qui utilise bien sûr gnutar). Impair.Réponses:
Ce qui semble s'être produit, c'est qu'ils ont double compressé l'archive.
Si vous exécutez
file
votre 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'
-z
option, à condition que l'entrée soit un fichier. C'est pourquoi il fonctionne sans l'-z
option après que vous l'avez déjà exécutégunzip
une fois, tar l'a ajouté automatiquement.Ce comportement est documenté, à partir de la page d'informations:
Cela provient du §8.1.1 «Création et lecture d'archives compressées».
la source