.Xz kullanan bir tarball'ı nasıl açarım?


776

Ben -xfzgzip ve bzip2 arşivlerini işleyen bir bayrakla tarball'ları çıkarmaya alışkınım .

Son zamanlarda bir .tar.xzdosyaya rastladım ve kullanarak bir adımda sıkıştırmayı açmak istiyorum, bunu tarnasıl yapabilirim?


10
xz-utilsMevcut değilse yüklemeniz gerekebileceğini unutmayın
Tobias Kienzler

işte sizin için katran bayraklarını tahmin eden benim küçük senaryom: gist.github.com/shime/5908634
shime

2
tar --helptarbayrakları listeler . -xzfiçin geçerlidir gzip. -xjfiçin bz2. -xJfiçin xz.
noobninja

Yanıtlar:


1017

Ubuntu, formatı kendi başına tanıyan GNU tar'ı içeriyor! Bir komut , kılavuza göre , desteklenen herhangi bir sıkıştırma yöntemiyle çalışır .

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

Eğer tar bir Cannot exechata verirse , önce yapmanız gerekebilir sudo apt install xz-utils.


41
GNU katranının bir özelliği. Rakip uygulamalar hakkında bir fikrim yok, ancak GNU tar ubuntu ile en alakalı olmalı. gnu.org/software/tar/manual/tar.html#SEC131
ramslök

42
Eğer karşılaşırsanız tar: xz: Cannot exec: No such file or directory, kurun xz-utils:sudo apt-get install xz-utils
Collin Anderson

10
Bu bir cevap değil, bir cevap olsa bile, 'cevabı umursamıyorsun'. 'En Son' olmayan insanlar için bir düşünce yedek
Sean Houlihane

6
Hangi sürümün tarartık belirli bir bayrağa ihtiyacı yok?
Mark Tomlin

8
@SeanHoulihane, bu bir cevap değil çünkü OP küçük bir XY problemi istedi . ramslök, OP'den istenenden daha iyi bir sonuç verdi ve bunun etkili olduğu “doğru olsa bile, cevabı umursamıyorsun”.
Christos Hayward

331

Deneyin

tar -xJf file.pkg.tar.xz

-JÖzellikle .xz dosyaları ile ilgilenen bayrağıdır.


59
2020'de kaç tane bayrak yapacağımızı merak ediyorum. Gibi ... 45 farklı sıkıştırma? Katran anahtarlarını bilmek zaten Linux-fu'da bir kara kuşaktır. : /
Shiki

22
@Shiki: Muhtemelen bu, artık sıkıştırma biçimi bayrağını belirlemenizi sağlamaz. (Bkz. Ramslök'ün cevabı.)
Nate CK


6
Katran destekleyici herhangi bir sürümü için soruyu cevapladığı için bu kesinlikle kabul edilebilir bir cevap olmalıdır.xz
pospi

8
2030 yılında bayraklar tamamlandı ... 2040
duygulandı

80

Herhangi bir nedenle tarçözümler işe yaramadıysa (belki de OS X yerleşiklerini kullandığınızdan dolayı), şunu deneyin:

unxz < file.tar.xz > file.tar

… Buna eşdeğerdir:

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

Sonra tardosyayı açmak için kullanın .


2
Bir boru ile inşa edilebilir olmalıdır.
gerrit

6
Yapabileceğini unxz < file.tar.xz | tar xveya benzerini yapabileceğini hissediyorum .
otuz üçte birleşme

7
bu benim için çalıştı, nerede tar xfyapmadı. ubuntu 12.04
philshem

Benim Ubuntu makinede En azından unxzeşdeğer değildir xz -dcancak bunlarla xz -d. Bu yüzden ayıklamak file.tar.xziçin file.tar, sadece yazarsınız unxz file.tar.xz. Bir eşdeğeri istiyorsanız xz -dc, stdout sıkıştırmasını açın, kullanın xzcat. Örneğin xzcat file.tar.xz | tar x.
nwellnhof

30

xz kayıpsız bir veri kompresörüdür. Katran topunu xz'den ayıklamanız ve katranı ayıklamanız gerekir:

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

O zaman katran çıkarmayı biliyorsun.

tar -xf my_archive.tar

Kaynak: XZ Utils - Vikipedi .


1
En iyi cevap. xzstdout yönlendirmesine ihtiyaç duymaz. Daha da iyisi:unxz -k
Mark Jeronimus

@MarkJeronimus Ara bir dosya oluşturduğundan bu kadar iyi bulmuyorum. GNU katran veya pipo kullanmak daha az kaynak gerektirmelidir.
Melebius

15

Aynı sorunu yaşadım, tar xfemir çıkartılamadı. Bunu düzeltmek için xz-utilspaketi yüklemeniz gerekir . Çözüm şuydu:

sudo apt-get install xz-utils

sonra:

tar xf myfile.tar.xz

14
tar -xvf package.tar.xz

-x - dosyaları çıkart

-v - işlenen dosyaları ayrıntılı olarak listeler

-f - belirtilen arşiv dosyasını kullan


5

Sadece , --xz ve -J seçenekleri mevcut olduğunda, 1.22'den önceki GNU tar sürümünün eski bir sürümüne sahipseniz, tar.xz dosyalarını kullanarak sıkıştırıp açabilirsiniz --use-compress-program xz. Örneğin,

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

veya

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

4

Tar, sıkıştırma biçimini tanırsa, bir bayrağa ihtiyacınız yoktur:

tar xvf *.tar.xz

Girişi manuel olarak açmanız gerekirse, örneğin tarınız xz'yi tanımayacak kadar eskiyse veya özel bir yola ihtiyacınız varsa:

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

Borular, sıkıştırılmamış bir ara dosya yapmaktan daha hızlıdır ve daha az disk alanı kullanın!



3

Vay, bu gerçekten iyi bir tane. Mac'te 7zip ile yapıldı mı? Bunu dene:

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

İstediği şey değil 7z gerektirir - tamamen katranlı olarak yapmak istiyor.
jrg

Evet, teşekkürler - "xz" beni yakaladı! Eh, yine de bir adım :) Ve tar J= tar xz, yani tar xzf file.tar.xz"normal" gibi yazabiliriz tar xvfz file.tar.gz. Yani temelde fark yok. Düğmeyi kullanmadan önce herhangi bir çizgi gerekmez.

Neredeyse soruya verilen cevap gibi. :)

Ben de atıldım çünkü tar zxf .xz dosyasında hata yaptı, her zaman sadece J kullanmanın yolunu kullanacağını düşünüyorum.
Jorge Castro

2
Evet! Manuel sayfa kaynak ile senkronize değil: buffer.c, lzma için -J kullanır.

3

Ubuntu, arşiv çıkarmak için gerekli modülleri içeren Python (Python 2.7 ve Python 3) ile birlikte gelir. Bu nedenle, ne sebeple olursa olsun bir tarkomut eksikse (sysadmin'inizin kaldırdığını ve sudokurma ayrıcalığına sahip olmadığınızı söyleyin):

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

Kısa bir komut dosyası olarak, bu daha okunur:

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

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

Diyelim ki bir .xzdosya oluşturdum tar cJf thing.xz /etc/passwd. Arşiv, içinde dosya bulunan bir etcdizini içerecektir passwd. Yukarıdaki betiğin kullanılması, etcgeçerli çalışma dizininizde yaratılan dizinin oluşmasına neden olur ve içinde passwddosya olur. Elbette, bu extractall()fonksiyonun içine çıkartmak istediğiniz yolu belirterek bu her zaman genişletilebilir .


0

unar oldukça güzel ve basit bir programdır ve yazması kolaydır, 7z ve RAR dahil hemen hemen her formatı unarchive için

(GNU) Objective-C yazılmış gibi görünüyor ve bu yüzden bazı gnustep(GNU's Objective-C uygulaması) kütüphanelerinin kurulumunu gerektiriyor ( gnustep-base-runtimeve libgnustep-base1.25).

--install-offers kullanıyorsanız veya aptönerilen paketleri kuracak şekilde yapılandırdıysanız , unaristediğiniz gibi olmayan birçok GUI GNUStep programı önerecek ve kuracaksınız

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

çıkış dizinini linux-sourceotomatik olarak yaratacaktır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.