Eu pesquisei a mensagem de erro e parece um problema do BSD contra o% GNUtar
.
Instale o GNU tar
se você puder no Mac OS e use-o para criar o tar
.
Quando ligo arquivos no meu Macbook e os descompacta no Linux, recebo repetidamente os seguintes avisos / erros:
tar: Ignoring unknown extended header keyword 'SCHILY.ino'
tar: Ignoring unknown extended header keyword 'SCHILY.nlink'
tar: Ignoring unknown extended header keyword 'SCHILY.dev'
tar: Ignoring unknown extended header keyword 'SCHILY.ino'
tar: Ignoring unknown extended header keyword 'SCHILY.nlink'
tar: Ignoring unknown extended header keyword 'SCHILY.dev'
tar: Ignoring unknown extended header keyword 'SCHILY.ino'
tar: Ignoring unknown extended header keyword 'SCHILY.nlink'
tar: Ignoring unknown extended header keyword 'SCHILY.dev'
tar: Ignoring unknown extended header keyword 'SCHILY.ino'
tar: Ignoring unknown extended header keyword 'SCHILY.nlink'
tar: Ignoring unknown extended header keyword 'SCHILY.dev'
tar: Ignoring unknown extended header keyword 'SCHILY.ino'
tar: Ignoring unknown extended header keyword 'SCHILY.nlink'
tar: Ignoring unknown extended header keyword 'SCHILY.dev'
tar: Ignoring unknown extended header keyword 'SCHILY.ino'
tar: Ignoring unknown extended header keyword 'SCHILY.nlink'
tar: Error exit delayed from previous errors
Felizmente, isso NÃO afeta os arquivos armazenados no arquivo, que são restaurados perfeitamente. No entanto, isso causa problemas em vários cenários, especialmente ao lidar com processos de construção em que o código de falha diferente de zero retornado por 'tar' faz com que compilações e instalações parem desnecessariamente.
Como posso obter o OS X para construir arquivos tar que funcionem bem com o resto do mundo Linux?
Além disso, para pontos de bônus, existe um arquivo tar distribuído publicamente com esses problemas. Existe alguma maneira de obter o Linux para lidar com o arquivo tar graciosamente sem mudar a maneira como ele foi originalmente comprimido?
Se você estiver usando o Mavericks ou mais recente, o gnutar não será mais incluído por padrão.
O trabalho em torno, se você usar o homebrew, é executar o seguinte:
brew install gnu-tar
Você pode então usar o comando gtar
para compatibilidade do linux.
Se você quiser substituir tar
por gtar
, basta substituir o link simbólico
tar --version
ll 'which tar'
sudo unlink 'which tar'
sudo ln -s 'which gtar' /usr/bin/tar
tar --version
Para restaurar o tar original fornecido com o Mac Os X, execute os comandos acima, mas substitua which gtar
por which bsdtar
Fonte: link
O GNU tar não gosta de algumas das informações opcionais que o tar padrão do OSX BSD inclui.
O GNU tar permitirá que você suprima esses avisos com a opção:
--warning=no-unknown-keyword
Veja: link
Observe que o tar do BSD não suporta esse sinalizador, portanto, se você precisar executar o mesmo código de descompactação em todas as plataformas, poderá usar algo como:
isGnuTar=$(tar --version | grep -q 'gnu')
if [ $? -eq 0 ]
then
echo "Detected GNU tar"
tar --warning=no-unknown-keyword -zxf my.tar.gz
else
tar -zxf my.tar.gz
fi
Para extrair o arquivo tar corretamente sem erros em um sistema Linux, você pode usar o bsdtar.
sudo apt-get install bsdtar
Em seguida, use como normal.
bsdtar -xvf file.tar
em que file.tar
é o arquivo tar que você deseja extrair.
Fonte: link
Como alternativa, você também pode usar o compactador de arquivos do GNOME.
COPYFILE_DISABLE=1 tar cf filename.tar
ou
tar --disable-copyfile cf filename.tar
Este é o recurso menos explorável do tar no OS X que eu estou pessoalmente ciente.
Veja também obtenho arquivos como ._foo no meu tarball no OS X?
Edit: parece que isso pode apenas parar a criação dos arquivos ._foo
-type indesejados, isso não impede a criação do cabeçalho (pelo menos no Yosemite / 10.10); obrigado comentaristas por apontar isso. No entanto, (para os pontos de bônus :), você pode lidar com essas tarballs extraindo-as assim:
tar xf filename.tar --pax-option=delete=SCHILY.*,delete=LIBARCHIVE.*
Isso funcionou usando o gnu tar 1.15.1, que é bem antigo! Como alternativa, você pode usar o pax, que (para mim) gera as informações extras em um diretório PaxHeader
, mas pelo menos sai sem erros:
pax -rf filename.tar
MacOSX já vem com gnutar. Se você quiser uma solução rápida e suja, adicione isso a ~/.bash_profile
alias tar='gnutar'
e execute source ~/.bash_profile
para atualizar
Além disso, o OSX vem com o tar GNU e BSD. Então você também pode desvincular a referência de tar do bsd para o gnu:
sudo unlink /usr/bin/tar;
sudo ln -s /usr/bin/gnutar /usr/bin/tar
Obrigado. Este tópico foi muito útil. Se você estiver usando o MacPorts, aqui está um tutorial rápido:
sudo port install gnutar
sudo ln -s /usr/local/opt/gnu-tar/libexec/gnubin/tar /usr/bin/gnutar
sudo ln -s /opt/local/libexec/gnubin/tar /usr/bin/gnutar
Adicione a seguinte linha a / Users / [yourname] /. profile
alias tar='/opt/local/libexec/gnubin/tar'
Saia e reinicie sua janela do Terminal.
Sim, o binário integrado do Mac adiciona um monte de coisas extras que o CentOS não gosta. Para corrigir isso, faça o seguinte:
sudo mv /usr/bin/tar /usr/bin/darwintar
sudo ln -s /usr/bin/gnutar /usr/bin/tar
ls -l /usr/bin/tar
Espero que ajude!
Ok, usei a pesquisa do Google, mas os três principais links confirmaram o que eu suspeitava
Editar: Você está no sistema Mac, eu pensei de outra forma. Você precisará usar o gnutar, ele já deve estar instalado, se não for instalado. Claro, você pode procurar outros links pesquisando por si mesmo.
No MAC OSX, instale o gnu-tar
brew install gnu-tar
crie seu tar compatível com o linux com:
gtar -c -f your_tar_file files
Ou você pode criar seu arquivo com o formato pax
tar -c --format pax -f your_tar_file files
Tags command-line tar linux macos