Dalam keadaan apa gunzip & tar xf berfungsi tetapi tar xzf gagal?

9

Sebagai ilustrasi: Saya telah mengunduh perpustakaan LPEL dari situs web perusahaan . Penggunaan tar -xzf gagal:

$ tar -xzf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz 
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

Namun, gunzip diikuti oleh tar -xf berfungsi dengan baik:

$ gunzip LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
$ tar -xf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar
# no error

Adakah yang bisa memberi tahu saya mengapa ini bisa terjadi? - Saya ingin tarperintah standar berfungsi sepanjang waktu.

Michael Schubert
sumber
Sistem operasi apa? IIRC ada Unix dengan a taryang tidak mengimplementasikan -z
Bananguin
@ user1129682 Dari situs perusahaan, sepertinya hanya ada opsi untuk Linux dan Menang ...
MattDMo
Jika tar Anda tidak mendukung z, gunakan pipa sebagai gantinya: gunzip < archive.tar.gz | tar -xharus bekerja di mana-mana.
frostschutz
Jika salinan tartidak mendukung gunzip dekompresi, Anda dapat melakukan hal berikut ini sebagai gantinya: gunzip -c $file | tar -x. Sangat umum untuk membungkusnya dalam fungsi shell.
1
Saya baru saja mengunduh arsip itu, dan memang tar xzfmemberikan kesalahan, pada Debian GNU / Linux (yang tentu saja menggunakan gnutar). Aneh.
derobert

Jawaban:

12

Apa yang tampaknya terjadi adalah bahwa mereka telah menggandakan arsip.

Jika Anda menjalankan filefile gunzip, Anda akan menemukan arsipnya masih berupa gzip. Dan jika Anda mengganti nama untuk memiliki .gz lagi, Anda dapat menggunakannya kembali.

Tampaknya baru-baru ini gnu tar akan secara otomatis menambahkan -zopsi, asalkan inputnya adalah file. Jadi, itu sebabnya ia bekerja tanpa -zopsi setelah Anda sudah menjalankan gunzipsekali, tar secara otomatis menambahkannya.

Perilaku ini didokumentasikan, dari halaman info:

"Membaca arsip terkompresi bahkan lebih sederhana: Anda tidak perlu menentukan opsi tambahan karena GNU` tar 'mengenali formatnya secara otomatis. [...] Algoritma pengenalan format didasarkan pada "tanda tangan", urutan byte khusus dalam awal file, yang khusus untuk format kompresi tertentu. "

Itu dari §8.1.1 "Membuat dan Membaca Arsip Terkompresi."

derobert
sumber
Sangat terlihat! Dikonfirmasi dengan semua kombinasi gunzip dan tar.
Michael Schubert