Questão Como faço para descompactar um tarball que usa .xz?


Estou acostumado a extrair tarballs com um -xfz flag, que lida com arquivos gzip e bzip2.

Recentemente eu corri em um .tar.xz arquivo e eu gostaria de descompactá-lo em uma etapa usando tar, Como eu posso fazer isso?


660
2018-01-02 23:41


origem


note que você pode ter que instalar xz-utils se já não estiver presente - Tobias Kienzler
aqui está meu pequeno script que adivinha as bandeiras tar para você: gist.github.com/shime/5908634 - shime
tar --help listas tar bandeiras. -xzf aplica-se a gzip. -xjf para bz2. -xJf para xz. - noobninja


Respostas:


O Ubuntu inclui o GNU tar, que reconhece o formato por si só! Um comando funciona com qualquer método de compactação suportado, por o manual.

tar xf archive.tar.xz
tar xf archive.tar.gz
tar xf archive.tar

etc. Se o alcatrão Cannot exec erro, talvez seja necessário sudo apt install xz-utils primeiro.


864
2018-02-26 17:41



É uma característica do GNU tar. Eu não sei sobre implementações concorrentes, mas o GNU tar deve ser o mais relevante para o Ubuntu. gnu.org/software/tar/manual/tar.html#SEC131 - ramslök
se você se deparar tar: xz: Cannot exec: No such file or directoryinstalar xz-utils: sudo apt-get install xz-utils - Collin Anderson
Isso não é uma resposta, é um 'você não se importa com a resposta, mesmo que você tenha perguntado' resposta. Poupe um pensamento para pessoas que não estão no 'mais recente' - Sean Houlihane
Qual versão do tar não requer mais o sinalizador específico? - Mark Tomlin
@SeanHoulihane, não é uma resposta porque o OP pediu um menor Problema XY. ramslök deu o OP melhor do que o pedido, e isso incluía um efetivo "Você não se importa com a resposta, mesmo que tenha perguntado", o que era apropriado porque era verdade. - JonathanHayward


Experimentar

tar -xJf file.pkg.tar.xz

o -J é a bandeira que lida especificamente com arquivos .xz.


287
2018-01-02 23:42



Gostaria de saber quantas bandeiras teremos em 2020. Como ... 45 compressões diferentes? Conhecer tar switches já é um faixa-preta no Linux-fu. : / - Shiki
@Shiki: Provavelmente é por isso que não faz mais você especificar o sinalizador de formato de compactação. (Veja a resposta de ramslök.) - Nate C-K
xkcd.com/1168 - Wordzilla
Esta deve ser totalmente a resposta aceita, uma vez que responde a pergunta para qualquer versão de suporte de alcatrão .xz - pospi
No ano 2030 as bandeiras se tornam Turing completas ... 2040 elas se tornam sencientes - user1359


Se por algum motivo o tar as soluções não funcionam (talvez porque você está usando os recursos internos do OS X), tente o seguinte:

unxz < file.tar.xz > file.tar

… O que é equivalente a:

xz -dc < file.tar.xz > file.tar

Então use tar para descompactar o arquivo.


68
2018-01-19 20:05



Isso deve ser construível com um cano. - gerrit
Eu sinto que você poderia apenas fazer unxz < file.tar.xz | tar x ou similar. - thirtythreeforty
isso funcionou para mim, onde tar xf nao fiz. ubuntu 12.04 - philshem
Pelo menos na minha máquina Ubuntu, unxz não é equivalente a xz -dc, mas para xz -d. Então, para extrair file.tar.xz para file.tar, você simplesmente escreveria unxz file.tar.xz. Se você quer um equivalente a xz -dc, descomprimir para stdout, usar xzcat. Por exemplo xzcat file.tar.xz | tar x. - nwellnhof


xz é um compressor de dados sem perdas. Você terá que extrair a bola alcalina de xz e depois extrair o tar:

unxz my_archive.tar.xz      # results in my_archive.tar

Então você sabe extrair um tar

tar -xf my_archive.tar

Fonte: XZ Utils - Wikipedia.


24
2018-05-23 18:44



Melhor resposta. xz não precisa de redirecionamento stdout. Melhor ainda: unxz -k - Mark Jeronimus


Eu tive o mesmo problema, o tar xf comando não foi capaz de extraí-lo. Para corrigir isso, você precisa instalar o xz-utils pacote. A solução foi:

sudo apt-get install xz-utils

então:

tar xf myfile.tar.xz

12
2018-02-14 18:44





Sobre o quê

tar -xvf package.tar.xz

-x - extrair arquivos

-v - lista de arquivos verbosamente

-f - usar arquivo morto especificado


8
2018-03-05 17:16





Se o tar reconhecer o formato de compactação, você não precisará de um sinalizador:

tar xvf *.tar.xz

Se você precisar descompactar a entrada manualmente, por exemplo, porque seu tar é muito antigo para reconhecer xz, ou você precisa de um caminho especial:

xz -cd *.tar.xz | tar xvf -

Os pipes são mais rápidos do que criar um arquivo intermediário descompactado e usar menos espaço em disco também!


3
2018-02-04 06:13