it-swarm.dev

Jak rozbalím tarball, který používá .xz?

Jsem zvyklý extrahovat tarbaly pomocí -xfz flag, která zpracovává archivy gzip a bzip2.

Nedávno jsem narazil na .tar.xz soubor a rád bych jej v jednom kroku dekomprimoval pomocí tar, jak to mohu udělat?

835
Jorge Castro

Ubuntu obsahuje GNU tar, který rozeznává formát sám! Jeden příkaz pracuje s jakoukoli podporovanou kompresní metodou na manuální .

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

atd. Pokud dehet dává Cannot exec chyba, možná budete muset Sudo apt install xz-utils za prvé.

1088
ramslök

Snaž se

tar -xJf file.pkg.tar.xz

The -J je příznak, který se konkrétně zabývá soubory .xz.

344
jrg

Pokud z nějakého důvodu nefungují řešení tar (pravděpodobně proto, že používáte vestavěné systémy OS X), zkuste toto:

unxz < file.tar.xz > file.tar

… Což odpovídá:

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

Poté pomocí tar rozbalte soubor.

83
Mathias Bynens

xz je bezeztrátový datový kompresor. Budete muset extrahovat dehtovou kouli z xz a poté dehtu:

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

Pak víte, že můžete extrahovat dehet

tar -xf my_archive.tar

Zdroj: XZ Utils - Wikipedia .

32
Foxx

Měl jsem stejný problém, příkaz tar xf Jej nemohl extrahovat. Chcete-li tento problém vyřešit, musíte nainstalovat balíček xz-utils. Řešením bylo:

Sudo apt-get install xz-utils

pak:

tar xf myfile.tar.xz
20
Zsolt Sky
tar -xvf package.tar.xz

-x - extrahovat soubory

-v - podrobně seznam zpracovaných souborů

-f - použití zadaného archivního souboru

15
nsane

Stačí přidat, že pokud máte starou verzi GNU tar před verzí 1.22, když byly dostupné možnosti --xz a -J, můžete komprimovat nebo dekomprimovat soubory tar.xz pomocí --use-compress-program xz. Například,

tar --use-compress-program xz -cf example.tar.xz file1 file2 file3

nebo

tar --use-compress-program xz -xf example.tar.xz
5
ScottH

Pokud tar rozpozná kompresní formát, nepotřebujete příznak:

tar xvf *.tar.xz

Pokud potřebujete dekomprimovat vstup ručně, například protože váš dehet je příliš starý na to, aby rozpoznal xz, nebo potřebujete speciální cestu:

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

Trubky jsou rychlejší než vytváření nekomprimovaného přechodného souboru a také méně místa na disku!

5
Orion Lawlor

Líbí se mi dtrx

Sudo apt install dtrx
dtrx your-file.tar.xz
4
Boris

Páni, to je opravdu dobré. Bylo to provedeno pomocí 7Zip na počítači Mac? Zkuste to:

7z x -so file.tar.xz | tar xf -
4
user8290

Ubuntu přichází s Python (Python 2.7 a Python 3)), který obsahuje potřebné moduly pro extrahování archivů. Takže pokud z jakéhokoli důvodu tar příkaz chybí (řekněme, že jej odstranil váš sysadmin a nemáte Sudo privillege k jeho instalaci), můžete použít:

python3 -c 'import tarfile,sys; b = tarfile.open(sys.argv[1]);print(b.extractall())' ./archive.xz 

Jako krátký skript je lépe čitelný jako:

#!/usr/bin/env python3
import tarfile,sys

with tarfile.open( sys.argv[1] ) as fd:
    fd.extractall()

Předpokládejme, že jsem vytvořil soubor .xz S tar cJf thing.xz /etc/passwd. Archiv bude obsahovat adresář etc s uvnitř souboru passwd. Použití výše uvedeného skriptu povede k vytvoření adresáře etc ve vašem aktuálním pracovním adresáři a uvnitř něj bude soubor passwd. Samozřejmě to lze vždy rozšířit zadáním cesty, kterou chcete extrahovat uvnitř funkce extractall().

3

unar je docela pěkný jednoduchý program a snadno se zapisuje, unarchivuje téměř jakýkoli formát včetně 7z a RAR

zdá se, že je zapsán v (GNU) Objective-C, a proto vyžaduje instalaci některých knihoven gnustep (implementace GNU Objective-C) ( gnustep-base-runtime a libgnustep-base1.25 )

pokud použijete --install-navrhuje nebo nakonfigurujete apt k instalaci navrhovaných balíčků, unar navrhne a nainstaluje mnoho GUI GNUStep programů, které nejsou tím, co chcete

Sudo apt install --no-install-suggests unar 
unar linux-source.tar.xz

vytvoří výstupní adresář linux-source automaticky.

1
cat