Quando eu tar arquivos no meu Macbook e descompactá-los 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, ele causa problemas em vários cenários, especialmente ao lidar com processos de compilação nos quais o código de falha diferente de zero retornado por 'tar' faz com que as compilações e as instalações parem desnecessariamente.
Como posso fazer com que o OS X construa arquivos tar que funcionam 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 o Linux manipular o arquivo tar normalmente sem alterar a maneira como ele foi originalmente compactado?
fonte
/usr/bin/gnutar
.Se você estiver usando o Mavericks ou mais recente, o gnutar não será mais incluído por padrão.
A solução alternativa, se você usar o homebrew, é executar o seguinte:
Você pode usar o comando
gtar
para compatibilidade com linux.Se você deseja substituir
tar
comgtar
, basta substituir o link simbólicoPara restaurar o tar original fornecido com o Mac Os X, execute os comandos acima, mas substitua
which gtar
porwhich bsdtar
Fonte:
https://github.com/jordansissel/fpm/issues/576
fonte
.bashrc
(ou seu equivalente):PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"
tar
link no/usr/local/bin
porcd /usr/local/bin ; ln -s gtar tar
- possivelmente a opção mais simplesO tar GNU não gosta de algumas informações opcionais que o tar OSD BSD padrão inclui.
O GNU tar permitirá que você suprima esses avisos com a opção:
Veja: https://www.gnu.org/software/tar/manual/html_section/tar_27.html
Observe que o tar 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:
fonte
Para extrair o arquivo tar corretamente, sem erros em um sistema Linux, você pode usar o bsdtar.
sudo apt-get install bsdtar
Então use como normal.
bsdtar -xvf file.tar
Ondefile.tar
está o arquivo tar que você deseja extrair.Fonte: https://bugs.launchpad.net/ubuntu/+source/tar/+bug/129314
Como alternativa, você também pode usar o rolo de arquivos GNOME.
fonte
ou
Esse é o recurso menos detectável do tar no OS X que eu conheço pessoalmente.
Veja também Por que obtenho arquivos como ._foo no meu tarball no OS X?
Editar: parece que isso só pode interromper a criação dos
._foo
arquivos indesejados , não interrompe a criação do cabeçalho (pelo menos no Yosemite / 10.10); obrigado comentadores por apontar. No entanto, (para os pontos de bônus :), você pode lidar com esses tarballs graciosamente extraindo-os assim:Isso funcionou usando o gnu tar 1.15.1, que é bem antigo! Como alternativa, você pode usar o pax, que (para mim) lança as informações extras em um
PaxHeader
diretório, mas pelo menos sai sem erro:fonte
tar --version
indicabsdtar 2.8.3 - libarchive 2.8.3
). Também preciso de um traço antescf
no último caso.O MacOSX já vem com o gnutar. Se você deseja uma solução rápida e suja, adicione-o ao
~/.bash_profile
e corra
source ~/.bash_profile
para atualizarAlém disso, o OSX é fornecido com alcatrão GNU e BSD. Então você também pode desvincular a ref do tar do bsd para o gnu:
fonte
/etc/hosts
?/etc/hosts
é para mapeamento de host / IP, certo?.bashrc
não é carregado para sessões do Terminal. Você precisa.bash_profile
, pois um shell de login é iniciado com uma nova janela do Terminal. / cc @BenjiWiebeObrigado. Este tópico foi muito útil. Se você estiver usando o MacPorts, aqui está um rápido tutorial:
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 a janela do Terminal.
fonte
Sim, o binário alcatrão incorporado do Mac adiciona um monte de coisas extras que o CentOS não gosta. Para corrigir isso, faça o seguinte:
Espero que ajude!
fonte
tar
programa estrangeiro gnutar para evitar confundir software esperando que um Mac aja como um Mac. US $ 0,02. -ErikOk, usei a pesquisa do Google, mas os três principais links confirmaram o que eu suspeitava
Veja neste link . Alguém relata que "Usar" bsdtar -xvf "funcionou".Edit: Você está no sistema Mac, pensei o contrário. Você precisará usar o gnutar, ele já deve estar instalado, se não estiver instalado. Claro, você pode olhar para outros links pesquisando a si mesmo.
fonte
No MAC OSX instale o gnu-tar
então crie seu tar compatível com linux com:
Ou você pode criar seu arquivo no formato pax
fonte