Para ilustrar el punto: descargué la biblioteca LEDA del sitio web de la compañía . Usando tar -xzf en él falla:
$ 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
Sin embargo, gunzip seguido de tar -xf funciona 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
¿Alguien puede decirme por qué podría ser esto? Me gustaría que el tar
comando estándar funcione todo el tiempo.
tar
que no implementa -zgunzip < archive.tar.gz | tar -x
debería funcionar en todas partes.tar
no soporta gunzip de descompresión, puede hacer lo siguiente en su lugar:gunzip -c $file | tar -x
. Es común envolver eso en una función de shell.tar xzf
da un error, en Debian GNU / Linux (que por supuesto usa gnutar). Impar.Respuestas:
Lo que parece haber sucedido es que han comprimido dos veces el archivo.
Si ejecuta
file
su archivo gunzip'd, encontrará que todavía es un archivo gzip. Y si le cambia el nombre para que tenga .gz nuevamente, puede volver a comprimirlo.Parece que recientemente gnu tar agregará automáticamente la
-z
opción, siempre que la entrada sea un archivo. Entonces, es por eso que funciona sin la-z
opción después de que ya lo haya ejecutadogunzip
una vez, tar lo agregó automáticamente.Este comportamiento está documentado, desde la página de información:
Eso es de §8.1.1 "Creación y lectura de archivos comprimidos".
fuente