2010-07-25 18 views
16

Después de ejecutar make distcheck recibo el mensaje de que he creado correctamente el paquete y que está listo para la distribución. Si elimino el tar.gz con tar -zxvf hello-0.2.tar.gz, extrae con éxito todos sus contenidos. Sin embargo, cuando intento extraer en diferentes máquinas consigo:Autotools - tar Esto no se ve como un archivo tar

tar: This does not look like a tar archive 
tar: Skipping to next header 
tar: Exiting with failure status due to previous errors 

Lo extraño es que estaba trabajando antes.

En la máquina estoy intentando construir el paquete, he actualizado mi automake 1.10.1, autoconf 2.61, and tar 1.20 to automake 1.11.1, autoconf 2.65, and tar 1.23 y sigue teniendo el mismo problema.

¿Alguna idea de lo que podría ser el problema?

+8

Funciona esto: 'gzip -d hello-0.2.tar.gz' seguido de:' tar -xf hello-0.2.tar' – SiggyF

+1

@SyggyF: Realmente funciona. ¿Alguna idea de por qué funciona de esta manera y no de la otra? – denim69

Respuesta

14

El problema no está en la máquina de compilación; el problema está en las máquinas de destino.

No todas las versiones de tar reconocen automáticamente la descompresión para aplicarla a un archivo comprimido tar. Dado que gunzip seguido de tar funciona, entonces el tar en su máquina de destino es uno de estos. Las versiones de tar en los sistemas Unix convencionales (AIX, HP-UX, Solaris) no reconocen automáticamente los archivos tar comprimidos. Los de Linux y MacOS X sí.

Tenga en cuenta que puede utilizar:

gzip -dc hello-0.2.tar.gz | tar -xf - 

para no crear el archivo sin comprimir intermedia.

+0

1. ¿Es el guión al final solo un error tipográfico o hace algo? 2. Con este método, obtengo el error 'tar: Archive is compressed. Use -z option' 'tar: El error no es recuperable: sale ahora'. Si agrego '-z' me da' tar: -z: no se puede abrir: no existe tal archivo o directorio'. – lindhe

+0

(1) El guión al final especifica que el archivo de entrada es una entrada estándar ('-f -'). (2) Es posible que tenga un archivo doblemente comprimido, aunque es poco probable. Podrías probar con 'gunzip hello-0.2.tar.gz' y luego usar' file hello-0.2.tar' para ver qué tipo de archivo cree que tienes. ¿Qué versión de 'tar' estás usando que reconoce que el archivo está comprimido pero no lo descomprime? Si usa 'tar -xzf -', puede estar bien. Si usa 'tar -xf -z', entonces le está diciendo a' tar' que el archivo para extraer es '-z'. –

4

En realidad esto podría suceder cuando el servidor que descarga aplica otra ronda de GZip y el cliente que utilizó para descargar el archivo no lee/respeta el encabezado HTTP Content-Encoding y almacena la carga HTTP como estaba en el cable.

Aunque el archivo parece tener solo la extensión .tar.gz, de hecho es .tar.gz.gz. después de ejecutar el gunzip una vez que el archivo obtiene la extensión .tar solamente pero esta vez ejecutando el comando tar tar xf hello-0.2.tar reconoce el formato GZip y ejecuta implícitamente el archivo a través de gunzip una vez más antes de extraerlo.

Puede comprobar esto ejecutando head hello-02.tar.gz y head hello-02.tar. GZip es un formato muy binario, mientras que el alquitrán es bastante legible. Si el archivo .tar aparece "demasiado binario", tiene un archivo doblemente codificado en sus manos.

+1

Exactamente mi problema. Muchas gracias :) – franzlorenzon

Cuestiones relacionadas