2010-07-25 20 views
16

make distcheck'u çalıştırdıktan sonra paketi başarıyla oluşturduğum ve dağıtım için hazır olduğumu bildiriyorum. tar.gz'u tar -zxvf hello-0.2.tar.gz ile açsam, tüm içeriğini başarıyla çıkarır. Ben farklı makinelerde bunları ayıklamak çalıştığınızda Ancak, ben alıyorum:Autotools - tar Bu, tar arşivine benzemiyor

tar: This does not look like a tar archive 
tar: Skipping to next header 
tar: Exiting with failure status due to previous errors 

garip şey daha önce çalışıyordu olmasıdır.

Makinede, paketi oluşturmaya çalışıyorum, automake 1.10.1, autoconf 2.61, and tar 1.20 to automake 1.11.1, autoconf 2.65, and tar 1.23 numaralı güncelleştirmeyi ve yine aynı sorunu güncelleştirdim.

Herhangi bir fikir sorun ne olabilir?

+8

Bu çalışma şunu yapar: 'gzip -d hello-0.2.tar.gz' sonra:' tar -xf hello-0.2.tar' – SiggyF

+1

@SyggyF: Aslında işe yarıyor. Bu şekilde neden ve neden diğeriyle ilgili herhangi bir fikir? – denim69

cevap

14

Sorun, yapı makinesinde değil; Sorun hedef makinelerde.

tar'un tüm sürümleri, sıkıştırılmış bir tar dosyasına uygulanacak dekompresyonu otomatik olarak tanır. gunzip ve ardından tar çalışıyorsa, o zaman hedef makinenizdeki tar bunlardan biridir. Genel Unix sistemlerinde (AIX, HP-UX, Solaris) bulunan tar sürümleri sıkıştırılmış katlama dosyalarını otomatik olarak tanımaz. Linux ve MacOS X'te olanlar.

gzip -dc hello-0.2.tar.gz | tar -xf - 

ara sıkıştırılmamış dosyası oluşturarak önlemek için: kullanabileceğiniz

Not. Eğer indirmek sunucu GZip bir turunu ve bunun telin üzerinde olduğu gibi HTTP Content-Encoding başlık ve depolar HTTP yükü saygı/okumuyor dosyayı indirmek için kullanılan istemci uyguladığında

+0

1. Kısa çizgi sonda bir yazım hatası mı yoksa bir şey mi yapıyor? 2. Bu yöntemle hatayı alıyorum: Arşiv sıkıştırıldı. -z seçeneğini kullanın: tar: Hata kurtarılamaz: şimdi çıkılıyor. Eğer '-z 'eklediysem bana bir cevap verir: -z: Açılamıyor: Böyle bir dosya ya da dizin yok. – lindhe

+0

(1) Sondaki tire, giriş dosyasının standart girdi olduğunu ('-f -') belirtir. (2) Çift sıkıştırılmış bir dosya olabilir, ancak bu biraz olası değil. 'Gunzip hello-0.2.tar.gz' yi deneyebilir ve daha sonra sahip olduğunuz dosya türünü görmek için 'hello-0.2.tar dosyasını kullanabilirsiniz. Arşivin sıkıştırıldığını, ancak sıkıştırmayı açmayacağını algılayan hangi 'tar' sürümünü kullanıyorsunuz? Eğer tar -xzf-'kullanırsanız Tamam olabilirsiniz. Eğer 'tar -xf -z' kullanırsanız, o zaman' 'z '' ifadesini ayıklayacağınız dosyaya 'tar 'diyorsunuz. –

4

Aslında bu gerçekleşebilir. Dosya yalnızca .tar.gz uzantısına sahip gibi görünse de aslında .tar.gz.gz'dır. Dosya .tar uzantısını aldıktan sonra gunzip dosyasını çalıştırdıktan sonra ancak tar xf hello-0.2.tar tar tar komutunu çalıştıran bu sefer GZip formatını tanır ve örtme işleminden önce bir kez daha gunzip dosyasından geçerek dosyayı çalıştırır.

Bunu, head hello-02.tar.gz ve head hello-02.tar çalıştırarak denetleyebilirsiniz. GZip çok ikili bir format, katran ise insan tarafından okunabilir. .tar dosyası "çok ikili" görünüyorsa, elinizde iki kez kodlanmış bir dosya var.

+1

Tam olarak benim sorunum. Çok teşekkürler :) – franzlorenzon