Kapan standar untuk mengemas kode sumber Linux menjadi .tar.gz?

29

Saat menelusuri proyek sumber terbuka yang terutama dikembangkan untuk sistem Linux dan mengunduh paket terbaru, kode sumber selalu disimpan dalam file .tar.gz atau .tar.bz2.

Apakah ada alasan untuk menggunakan .tar.gz atau .tar.bz2 daripada sesuatu seperti .zip atau .rar atau beberapa algoritma kompresi lainnya (atau bahkan membiarkannya tidak terkompresi jika proyeknya cukup kecil)?

Joe Z.
sumber
3
Di mana Anda menjelajah? Sebagian besar proyek saat ini mendistribusikan kode sumber mereka dalam bentuk URL repositori VCS, dan ketika mereka memberikan arsip biasanya dalam bentuk .ZIP. TGZ telah usang selama beberapa dekade (meskipun beberapa orang yang keras kepala menolak untuk menerima pesan) dan saya belum pernah melihat proyek apa pun menggunakannya dalam waktu yang lama ...
Mason Wheeler
4
Linux, zip dan rar bahkan tidak ada ketika tar(yaitu, Tape Archiver) sudah menjadi standar de facto.
SK-logic
19
@Mason Wheeler: Tentukan "usang". Sebuah format tidak usang selama orang-orang menganggapnya berguna dan tetap menggunakannya. Saya pikir tar + gz melakukan pekerjaan dan beralih ke format lain dalam banyak kasus hanya masalah selera. Proyek seperti Eclipse ( eclipse.org ) masih menggunakannya.
Giorgio
3
@MasonWheeler, jelajahi sekitar ftp.gnu.org, misalnya. Ini adalah hal-hal yang membangun seluruh Internet. Dan, saya harap, semua orang akan setuju bahwa ZIP lebih rendah secara teknologi.
SK-logic
5
@MasonWheeler dan lainnya. Hanya karena tar memiliki pengarsipan pita pada namanya tidak membuatnya usang. SEMUA ORANG Saya tahu menggunakan tar di dunia * nix / BSD dan menggunakan .zip relatif jarang. Bahkan, ketika saya melihat file zip, saya hampir selalu mempertanyakan apakah itu hanya arsip Windows.
Rob

Jawaban:

31

Untuk menjawab pertanyaan dalam tajuk: tar.gz / tar.bz2 menjadi standar untuk mendistribusikan kode sumber Linux sejak waktu yang sangat lama, seperti dalam lebih dari 2 dekade, dan mungkin beberapa lagi. Secara signifikan bahkan sebelum Linux muncul.

Bahkan, tar adalah singkatan dari (t) ape (ar) lokio. Pikirkan gulungan keras, dan Anda akan mendapatkan ide berapa umurnya. ba-dum-bump.

Sebelum orang memiliki pembakar CD, distro perangkat lunak diletakkan pada disket 1,44Mb. File tar terkompresi dipotong menjadi potongan-potongan berukuran floppy oleh splitperintah, dan potongan-potongan ini disebut tarballs . Anda akan bergabung kembali bersama catdan mengekstrak arsip.

Untuk menjawab pertanyaan lain mengapa tidak Zip atau Rar, itu mudah. Pengarsipan tar berasal dari Unix, sedangkan dua lainnya berasal dari MS-DOS / Windows. Tar menangani metadata file unix (izin, waktu, dll), sementara zip dan rar tidak sampai baru-baru ini (mereka menyimpan data file MS-DOS). Bahkan, zip membutuhkan waktu beberapa saat sebelum mulai menyimpan metadata NTFS (stream alternatif, deskriptor keamanan, dll.) Dengan benar.

Banyak dari algoritma kompresi di PKZip adalah hak milik pembuat asli, dan yang terakhir ditambahkan ke versi Dos / Windows adalah Deflate (RFC 1951) yang melakukan sedikit lebih baik daripada Implode, hak milik di sana yang menghasilkan kompresi umum terbaik . Gzip menggunakan algoritma Deflate.

Algoritma kompresi RAR adalah milik, tetapi ada implementasi open source gratis dari dekompresor. Rilis resmi RAR dan WinRAR dari RARlab tidak gratis .

Gzip menggunakan algoritma deflate, dan karenanya tidak lebih buruk dari PKZip. Bzip2 mendapat rasio kompresi yang sedikit lebih baik.

TL; versi DR:

tar.gz dan tar.bz2 berasal dari Unix, jadi orang Unix menggunakannya. Zip dan Rar berasal dari dunia DOS / Windows, jadi orang-orang DOS / Windows menggunakannya. tartelah menjadi standar untuk bundling arsip barang di * nix selama beberapa dekade.

ikmac
sumber
1
Beberapa klarifikasi: Open-source implementasi RAR didasarkan pada RARlab sendiri open source decompressor . Ini juga jauh lebih baru daripada kebanyakan kompresor lainnya, muncul pertama kali di Windows lama setelah ACE, ARJ, dan ARC yang sebelumnya lebih populer, yang masing-masing menggantikan yang lain, seingat saya. Tidak ada yang pernah benar-benar muncul di Unix hingga relatif sangat baru.
greyfade
Koreksi kecil: Algoritma RAR tidak terbuka: fedoraproject.org/wiki/Licensing:Unrar?rd=Licensing/Unrar
Sven Slootweg
16

Saya tidak tahu kapan, tapi saya membayangkan alasan mengapa itu digunakan adalah kombinasi dari: tar menjadi tradisional (sudah sangat tua); manajemen yang mudah dari baris perintah; tar mempertahankan info sistem file yang mungkin tidak ZIP atau RAR; dan dua proses pass berarti kompresi lebih efisien (satu file besar mengompresi lebih baik daripada banyak file kecil).

bzip2 (.bz2) tampaknya menggantikan gzip (.gz) karena memberikan kompresi yang lebih baik, dengan cara yang hampir sama dengan gzip sendiri yang memindahkan kompres sebelumnya (.Z).

John Bickers
sumber
3
Dan xz (LZMA) tampaknya akan menggantikan bzip2 di mana rasio rasio penting ( file .xz 30% lebih kecil dari gzip). Gzip mungkin yang tercepat di antara mereka semua.
sastanin
8

Intinya, pengarsipan dan kompresi adalah dua operasi yang berbeda. Tar.gz dengan jelas menunjukkan niatnya: arsip terkompresi sedangkan .zip atau .rar hanya menunjukkan beberapa hal terkompresi.

Pieter B
sumber
5

tarbersifat tradisional di unix, ia menggabungkan file tetapi tidak perlu memampatkannya. Mengkompresnya dengan .g atau .bz atau .b2 sama mudahnya.

Zipdan rarkesopanan dan lebih umum di dunia Windows

Martin Beckett
sumber
Ah ya, pertanyaan saya tidak cukup spesifik. Saya berbicara tentang kode Linux / Unix kebanyakan.
Joe Z.
4
+1 - tetapi zip berhenti menjadi hak milik beberapa waktu lalu.
Billy ONeal
Ya, subset zip adalah standar sekarang: iso.org/iso/home/store/catalogue_tc/…
rogerdpack
4

Ini tradisional, ada di mana-mana, dan berfungsi. Plus saya pikir itu agak jelas.

Memperbarui

Saya minta maaf, saya lupa kebanyakan orang tidak tahu apa yang saya ketahui atau memiliki pengalaman sebagai administrator di lingkungan yang heterogen.

Tradisi seperti dalam kebiasaan atau praktik yang sudah berurat berakar dari waktu ke waktu. Kami tahu ini memiliki dasar dalam sejarah karena tar berasal dari Tape ARchive yang merujuk pada teknologi cadangan kaset lama. Ia memiliki sejarah panjang di berbagai sistem operasi Unix sejak 1979 di Unix edisi ke 7 di mana ia menggantikan tp. Sistem Linux biasanya merupakan gabungan dari Linux Kernel dan perangkat lunak GNU yang merupakan bagian dari GNU tar. Semua riwayat tar ini berarti mayoritas orang teknis yang berpengalaman tahu cara menggunakannya tanpa harus merujuk ke dokumentasi karena sudah tertanam. Untuk pengguna baru ada banyak dokumentasi karena perangkat lunak telah ada sejak lama.

Di mana - mana seperti muncul atau ditemukan di mana-mana. Penyalahgunaan yang agak diterima adalah di mana penampilannya tidak universal, tetapi dalam persentase yang cukup besar dari populasi untuk diterima di mana-mana. 7th Edition Unix adalah nenek moyang dari Unix versi terbesar termasuk Sun OS / Solaris, AIX, HPUX, AIX, BSD, dll . Ada juga tingkat kompatibilitas silang yang tinggi di berbagai implementasi tar pada unix . Karena MacOS (sejak OS 10) didasarkan pada BSD, ia juga memiliki tar. Linux menggunakan perangkat lunak GNU yang mencakup GNU Tar sehingga tar tersedia di semua rasa Linux. DAN, sementara tidak tersedia sebagai builtin ada banyak implementasi dari tar tersedia pada Windows termasuk GNU Tar melalui cygwin dan native. GNU Tar khususnya tersedia di sebagian besar Unices dan Windows menjadikannya pilihan yang baik untuk migrasi file di seluruh OS.

Bekerja seperti itu sudah berfungsi untuk waktu yang lama tanpa modifikasi besar. Ini tersedia di semua platform utama di luar kotak (kecuali untuk Windows, di mana tersedia sebagai perangkat lunak tambahan). Format ini juga didukung pada semua platform utama yang memfasilitasi pertukaran antar platform. Tidak hanya masih digunakan sebagai cara untuk membuat arsip yang mudah dibawa-bawa, tetapi tar-pipe adalah idiom standar Unix untuk menyalin pohon direktori, terutama di seluruh lingkungan yang heterogen. Singkatnya, sudah ada dan masih banyak digunakan karena ia melakukan apa yang dilakukannya dengan baik.

dietbuddha
sumber
5
dengan segala hormat, jawaban ini pendek, sederhana, dan itu ... entah bagaimana tidak bekerja untuk saya
agas
5
... 1) "tradisional" memiliki bobot kurang dari nol dalam pengembangan perangkat lunak; kalau tidak, kita semua akan mengkode COBOL pada IBM-360 menggunakan kartu punch; mengatakan "itu tradisional" sama sekali tidak menjelaskan apa pun ...
Agas
5
... 2) "di mana-mana" ... sungguh? Satu hal yang saya perhatikan ketika beralih dari Unix ke Windows adalah tidak ada yang menggunakan tar dan semuanya berjalan baik tanpa itu. Ketika, setelah beberapa tahun coding yang bahagia, saya pernah membutuhkan tar, saya butuh waktu cukup lama untuk menemukan versi Windows-nya. Itu ada dimana-mana? beri aku istirahat ...
agas
4
... 3) "itu bekerja" - yah tanpa menjelaskan jenis pekerjaan dan mengapa dilakukan oleh tar, ini hanya melambaikan tangan. Sudah lama sekali tetapi saya masih ingat jenis kejutan ketika saya belajar tentang tar. Utilitas yang tidak kompres terasa tidak berguna bagi saya. Tentu saja saya salah, tetapi jika saat itu seseorang akan mencoba untuk "mendidik" saya dengan pernyataan satu kata seperti itu bekerja saya akan berpikir "tidak, itu masturbasi" ...
Agg
4
... Ringkasnya, nol upaya ini, jawaban yang murni tidak memiliki penjelasan dan konteks. Pernyataan yang dibuat tidak dijelaskan atau didukung dengan apa pun. Kata-kata yang terlalu umum tampaknya hanya mengulangi apa yang dinyatakan dalam pertanyaan yang diajukan alih-alih menjawabnya.
nyamuk