Como extrair corretamente um .tar.gz com md5.sum no solaris 10

Como extrair corretamente um .tar.gz com md5.sum no solaris 10

Estou tentando extrair um gcc-4.9.0.tar.gz baixado de um site espelho do gcc. Para verificar a assinatura md5 nele antes de compactar, eu fiz

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

que deu

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

Isso corresponde ao md5.sum no diretório baixado da fonte.

Então eu fiz

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

A extração começou, mas logo terminou com uma

 tar: directory checksum error

Eu também tentei compactar e descompactar separadamente assim

 gunzip gcc-4.9.0.tar.gz

Então

tar -xvf gcc-4.9.0.tar

mas também terminou com um erro de soma de verificação.

Por favor, como resolvo isso?

Responder1

Parece que o arquivo tar está com defeito ou não é compatível com o padrão.

Observe que busquei o arquivo como imagem bz2 e não tive problemas ao usar o arquivo bzip2 -d gcc-4.9.0.tar.bz2 < tar tvf -.

O arquivo descompactado possui a soma de verificação md5: 6b8f599053a52e7c2076485d1ad3e747.

Agora estou buscando o arquivo .gz, vamos ver o que consigo...

OK, aqui está a soma de verificação md5 de gcc-4.9.0.tar.gz fe8786641134178ecfeee2dc7644a0d8, que é a mesma que você vê.

Observe que o seu problema geralmente acontece quando o arquivo foi criado por gtar, mas em casos raros resulta em um arquivo directory checksum error.

Se você quiser entender melhor o que está acontecendo, recomendo que você use o tartestprograma que acompanha o star.

Obtenha as últimas novidades schilytoolsem:

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

compile e execute o programa tartest/OBJ/*/tartest < gcc-4.9.0.tar.

Eu fiz isso e descobri que o motivo é que o arquivo usa um "tipo de arquivo" 'L' específico do fornecedor GNU em um cabeçalho tar.

IMPORTANTE: se o GNU tar fosse parcialmente compatível com o padrão ou pelo menos parcialmente livre de erros, esse problema não acontecia porque o nome do arquivo em questão se encaixava perfeitamente no esquema de nomes POSIX.1-1988 100+255. Portanto, esta é outra dica de por que as pessoas deveriam evitar usar o GNU tar.

Eu recomendo usar star.

Cada recurso starestá totalmente sob controle de uma estrutura de descrição de propriedade. Se você especificar um formato de arquivo, starnunca criará conteúdo de arquivo relacionado a um formato de arquivo diferente.

Se você, por exemplo, ligar:

star -c -f out.tar -Hustar somedir

starusará um formato de arquivo 100% compatível com POSIX.1-1988 e caso haja um arquivo que não caiba nesse formato de arquivo, stargrava um aviso em vez de arquivar o arquivo usando métodos não padrão.

A propósito: aqui está o conjunto de alterações, onde a Sun adicionou suporte para este recurso exclusivo do fornecedor:

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 

Responder2

Você precisa usar o gtar, geralmente vem pré-instalado com o pacote SUNWgtar:

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

O tar sem patch do Native Solaris pode ter problemas com arquivos criados com o tar GNU. Veja a resposta de @schily por quê.

informação relacionada