Cómo extraer correctamente un .tar.gz con md5.sum en solaris 10

Cómo extraer correctamente un .tar.gz con md5.sum en solaris 10

Estoy intentando extraer un gcc-4.9.0.tar.gz descargado de uno de los sitios espejo de gcc. Para verificar la firma md5 antes de comprimirlo, lo hice

digest -a md5 -v gcc-4.9.0.tar.gz

que dio

md5 (gcc-4.9.0.tar.gz) = fe8786641134178ecfeee2dc7644a0d8

Esto coincide con md5.sum en el directorio descargado de la fuente.

entonces lo hice

gzip -dc gcc-4.9.0.tar.gz | tar xvf -

La extracción comenzó pero pronto terminó con un

 tar: directory checksum error

También intenté comprimir y descomprimir por separado así.

 gunzip gcc-4.9.0.tar.gz

Entonces

tar -xvf gcc-4.9.0.tar

pero también terminó con un error de suma de comprobación.

Por favor ¿Cómo soluciono esto?

Respuesta1

Parece que el archivo tar está defectuoso o no cumple con el estándar.

Tenga en cuenta que obtuve el archivo como imagen bz2 y no tuve problemas con el uso bzip2 -d gcc-4.9.0.tar.bz2 < tar tvf -.

El archivo descomprimido tiene la suma de comprobación md5: 6b8f599053a52e7c2076485d1ad3e747.

Ahora estoy recuperando el archivo .gz, veamos qué obtengo...

Bien, aquí está la suma de comprobación md5 de gcc-4.9.0.tar.gz fe8786641134178ecfeee2dc7644a0d8 que es la misma que ves.

Tenga en cuenta que el problema suele ocurrir cuando el archivo ha sido creado por gtar, pero en casos excepcionales resulta en un archivo directory checksum error.

Si desea comprender mejor lo que está pasando, le recomiendo que utilice el tartestprograma que viene con star.

Obtenga lo último schilytoolsde:

http://sourceforge.net/projects/schilytools/files/

compilar y luego ejecutar el programa tartest/OBJ/*/tartest < gcc-4.9.0.tar.

Hice esto y descubrí que la razón es que el archivo utiliza un "tipo de archivo" 'L' específico del proveedor GNU en un encabezado tar.

IMPORTANTE: si GNU tar cumplía la mitad del estándar o al menos estaba libre de errores, este problema no ocurría ya que el nombre del archivo en cuestión encajaba perfectamente en el esquema de nombres POSIX.1-1988 100+255. Así que esta es otra pista de por qué la gente debería evitar el uso de GNU tar.

Recomiendo usar star.

Cada característica starestá completamente bajo el control de una estructura de descripción de propiedad. Si especifica un formato de archivo, starnunca creará contenido de archivo relacionado con un formato de archivo diferente.

Si llama, por ejemplo:

star -c -f out.tar -Hustar somedir

starutilizará un formato de archivo POSIX.1-1988 100% compatible y, en caso de que haya un archivo que no quepa en ese formato de archivo, starescribirá una advertencia en lugar de archivar el archivo utilizando métodos no estándar.

Por cierto: aquí está el conjunto de cambios, donde Sun agregó soporte para esta característica única del proveedor:

changeset:   11995:caff1bd711f5 
user:        Rich Burridge <[email protected]> 
date:        Thu Mar 25 13:21:39 2010 -0700 

description: 
        6202362 Solaris tar can't unpack files created with GNU tar 

modified: 
   usr/src/cmd/tar/tar.c 

Respuesta2

Necesitas usar gtar, generalmente viene preinstalado con el paquete SUNWgtar:

gzip -dc gcc-4.9.0.tar.gz | /usr/sfw/bin/gtar -xf -
echo $?
0

El tar nativo de Solaris sin parches puede tener problemas con los archivos creados con GNU tar. Ver la respuesta de @schily por qué.

información relacionada