Kiedy standard pakowania kodu źródłowego Linuksa stał się .tar.gz?

29

Podczas przeglądania projektów typu open source opracowanych przede wszystkim dla systemów Linux i pobierania najnowszych pakietów, kod źródłowy jest zawsze przechowywany w pliku .tar.gz lub .tar.bz2.

Czy jest jakiś powód, aby używać .tar.gz lub .tar.bz2 zamiast czegoś takiego jak .zip lub .rar lub jakiś inny algorytm kompresji (lub nawet pozostawić go bez kompresji, jeśli projekt jest wystarczająco mały)?

Joe Z.
źródło
3
Gdzie przeglądasz Obecnie większość projektów rozpowszechnia swój kod źródłowy w postaci adresu URL repozytorium VCS, a gdy przekazuje archiwa, zwykle ma on postać .ZIP. TGZ jest przestarzały od dziesięcioleci (pomimo upartej odmowy kilku nieuprzejmy ludzi, aby otrzymać wiadomość) i od dłuższego czasu nie widziałem żadnego projektu, w którym się z tym korzysta ...
Mason Wheeler,
4
Linux, zip i rar nawet nie istniały, kiedy tar(tj. Tape Archiver) był już de facto standardem.
SK-logic
19
@Mason Wheeler: Zdefiniuj „przestarzałe”. Format nie jest przestarzały, dopóki ludzie uznają go za przydatny i będą go nadal używać. Myślę, że tar + gz wykonuje swoją pracę, a przejście na inny format jest w wielu przypadkach kwestią gustu. Projekty takie jak Eclipse ( eclipse.org ) wciąż go używają.
Giorgio
3
@MasonWheeler, przeglądaj ftp.gnu.orgna przykład. Na tym opiera się cały Internet. I mam nadzieję, że wszyscy zgodzą się, że ZIP i tak jest technologicznie gorszy.
SK-logic
5
@MasonWheeler i inni. To, że tar ma w swojej nazwie archiwizator taśmowy, nie czyni go przestarzałym. KAŻDY Wiem, że używa tar w świecie * nix / BSD, a używanie .zip jest stosunkowo rzadkie. W rzeczywistości, gdy widzę plik zip, prawie zawsze pytam, czy jest to archiwum tylko dla systemu Windows.
Rob

Odpowiedzi:

31

Aby odpowiedzieć na pytanie w tytule: tar.gz / tar.bz2 stał się standardem do dystrybucji kodu źródłowego Linuksa bardzo bardzo dawno temu, podobnie jak ponad 2 dekady, i prawdopodobnie jeszcze kilka. Znacząco jeszcze zanim powstał Linux.

W rzeczywistości smoła oznacza szczypiorek (t) ape (ar). Pomyśl kołowrotek twarde, a dostaniesz pomysł jak stary jest. ba-dum-bump.

Zanim ludzie mieli nagrywarki CD, na dyskietkach 1,44 Mb wprowadzono dystrybucje oprogramowania. Skompresowany plik tar został pocięty na polecenie wielkości dyskietki spliti te kawałki nazwano tarballami . Ponownie dołączysz do nich cati rozpakujesz archiwum.

Odpowiedź na inne pytanie, dlaczego nie Zip lub Rar, jest łatwa. Archiwizator tar pochodzi z Uniksa, a pozostałe dwa pochodzą z MS-DOS / Windows. Tar obsługuje metadane plików unix (uprawnienia, czasy itp.), Podczas gdy zip i rar dopiero niedawno (zapisywały dane pliku MS-DOS). W rzeczywistości zip zajął trochę czasu, zanim zaczął poprawnie przechowywać metadane NTFS (alternatywne strumienie, deskryptor zabezpieczeń itp.).

Wiele algorytmów kompresji w PKZip jest zastrzeżonych dla oryginalnego producenta, a ostatnim dodanym do wersji Dos / Windows była Deflate (RFC 1951), która działała nieco lepiej niż Implode, zastrzeżona algo tam, która zapewniła najlepszą ogólną kompresję . Gzip używa algorytmu Deflate.

Algorytm kompresji RAR jest zastrzeżony, ale istnieje darmowa implementacja dekompresora typu open source. Oficjalne wydania RAR i WinRAR z RARlab nie są darmowe .

Gzip używa algorytmu deflacji, a więc nie jest gorszy niż PKZip. Bzip2 dostaje nieco lepsze współczynniki kompresji.

Wersja TL; DR:

tar.gz i tar.bz2 są z Uniksa, więc ludzie z nich korzystają. Zip i Rar pochodzą ze świata DOS / Windows, więc używają ich ludzie z DOS / Windows. tarod kilku dekad jest standardem do pakowania archiwów rzeczy w * nix.

ikmac
źródło
1
Wyjaśnienie: Implementacje RAR typu open source oparte są na własnym dekompresorze RARlab typu open source . Jest również znacznie nowszy niż większość innych kompresorów, pojawiając się najpierw w systemie Windows długo po bardziej popularnych wcześniej ACE, ARJ i ARC, które z kolei wypierają inne, o ile pamiętam. Żaden z nich nigdy tak naprawdę nie pojawił się na Uniksie do stosunkowo niedawna.
greyfade
Mała korekta: Algorytm RAR nie jest otwarty: fedoraproject.org/wiki/Licensing:Unrar?rd=Licensing/Unrar
Sven Slootweg
16

Nie wiem kiedy, ale wyobrażam sobie, że powodem jego użycia jest kombinacja: tar jest tradycyjny (jest bardzo stary); łatwe zarządzanie z poziomu wiersza poleceń; informacje o systemie plików zachowujące tar, których ZIP lub RAR mogą nie mieć; a proces dwuprzebiegowy oznacza, że ​​kompresja jest bardziej wydajna (jeden kompresuje duży plik lepiej niż wiele małych plików).

bzip2 (.bz2) wydaje się zastępować gzip (.gz), ponieważ zapewnia lepszą kompresję, podobnie jak sam gzip wyparł wcześniejszą kompresję (.Z).

John Bickers
źródło
3
A xz (LZMA) wydaje się wypierać bzip2 tam, gdzie liczy się współczynnik kompresji ( pliki .xz są o 30% mniejsze niż gzip). Gzip jest prawdopodobnie najszybszym z nich wszystkich.
sastanin
8

Zasadniczo archiwizacja i kompresja to dwie różne operacje. Tar.gz bardzo wyraźnie pokazuje intencję: skompresowane archiwum, podczas gdy .zip lub .rar po prostu pokazują, że są to niektóre skompresowane pliki.

Pieter B.
źródło
5

tarjest tradycyjny w Uniksie, łączy pliki, ale niekoniecznie je kompresuje. Kompresowanie ich za pomocą .g, .bz lub .b2 jest równie łatwe.

Zipi rarsą odpowiednie i bardziej powszechne w świecie Windows

Martin Beckett
źródło
Ach tak, moje pytanie nie było wystarczająco szczegółowe. Mówiłem głównie o kodzie Linux / Unix.
Joe Z.
4
+1 - ale zip przestał być zastrzeżony jakiś czas temu.
Billy ONeal,
Tak, podzbiór zip jest teraz standardem: iso.org/iso/home/store/catalogue_tc/…
rogerdpack
4

Jest tradycyjny, wszechobecny i działa. Poza tym myślałem, że to trochę oczywiste.

Aktualizacja

Przepraszam, zapominam, że większość ludzi nie wie, co wiem, ani nie mam doświadczenia jako administrator w heterogenicznych środowiskach.

Tradycja jak w zwyczaju lub praktyce zakorzeniona w czasie. Wiemy, że ma on swoje podstawy w historii, ponieważ tar wywodzi się z Tape ARchive, odwołując się do starej technologii tworzenia kopii zapasowych na taśmach. Ma długą historię w różnych systemach operacyjnych Unix od 1979 roku w 7. edycji Uniksa, gdzie zastąpił tp. Systemy Linux są zazwyczaj połączeniem jądra Linux i oprogramowania GNU, którego częścią jest GNU tar. Cała ta historia smoły oznacza, że ​​większość doświadczonych ludzi technicznych wie, jak jej używać bez konieczności odwoływania się do dokumentacji, ponieważ jest ona zakorzeniona. Dla nowych użytkowników jest mnóstwo dokumentacji, ponieważ oprogramowanie istnieje od tak dawna.

Wszechobecny jak w pojawieniu się lub znaleziony wszędzie. Dość zaakceptowanym niewłaściwym użyciem jest sytuacja, w której wygląd nie jest uniwersalny, ale stanowi wystarczająco duży odsetek populacji, aby można go było uznać za wszechobecny. 7. edycja Unix jest przodkiem największych wersji Uniksa, w tym Sun OS / Solaris, AIX, HPUX, AIX, BSD itp . Istnieje również wysoki stopień kompatybilności krzyżowej w różnych implementacjach tar na Uniksie . Ponieważ MacOS (od OS 10) jest oparty na BSD, ma również tar. Linux używa oprogramowania GNU, które zawiera GNU Tar, więc tar jest dostępny we wszystkich wersjach Linuksa. I chociaż nie jest dostępny jako wbudowany, istnieje wiele implementacji tar dostępnych w systemie Windows, w tym GNU Tar poprzez cygwin i natywnie. Szczególnie GNU Tar jest dostępny na większości Uniksów i Windows, co czyni go dobrym wyborem do migracji plików w różnych systemach operacyjnych.

Działa tak, jakby działał przez długi czas bez większych modyfikacji. Jest dostępny na wszystkich głównych platformach od razu po wyjęciu z pudełka (z wyjątkiem Windows, gdzie jest dostępny jako dodatkowe oprogramowanie). Format jest także obsługiwany na wszystkich głównych platformach, co ułatwia wymianę między platformami. Nie tylko jest nadal używany jako sposób na tworzenie łatwych do przenoszenia archiwów, ale rura-tar jest standardowym idiomem uniksowym do kopiowania drzew katalogów, szczególnie w środowiskach heterogenicznych. Krótko mówiąc, jest w pobliżu i nadal jest intensywnie używany, ponieważ robi to, co robi dobrze.

dietbuddha
źródło
5
z całym szacunkiem, ta odpowiedź jest krótka, uproszczona i ... jakoś nie działa dla mnie
gnat
5
... 1) „tradycyjny” ma mniej niż zero wagi w rozwoju oprogramowania; w przeciwnym razie wszyscy kodowalibyśmy COBOL na IBM-360 za pomocą kart dziurkowanych; powiedzenie „to tradycyjne” wcale nie wyjaśnia…
komara
5
... 2) „wszechobecny” … naprawdę? Jedną z rzeczy, które zauważyłem po przejściu z Unixa na Windows, jest to, że nikt nie używał tar i bez niego wszystko szło dobrze. Kiedy po kilku latach szczęśliwego kodowania raz potrzebowałem smoły, znalezienie wersji dla Windows zajęło mi sporo czasu. To wszechobecne? daj mi spokój ...
komara
4
... 3) „działa” - dobrze bez wyjaśnienia, jaki rodzaj pracy i dlaczego jest wykonywany przez tar, to tylko machanie ręką. To było dawno temu, ale wciąż pamiętam rodzaj szoku, kiedy dowiedziałem się o smole. Narzędzie, które nie kompresuje, wydawało mi się po prostu bezużyteczne. Oczywiście się myliłem, ale jeśli wtedy ktoś spróbuje mnie „wyedukować” za pomocą jednego słowa, jakby to działało, pomyślałbym, że „nie, on się masturbuje” ...
gnat,
4
... Podsumowując, ta bezinteresowna, czysto uzasadniona odpowiedź pozbawiona jest wyjaśnienia i kontekstu. Złożone oświadczenia nie są wyjaśnione ani poparte niczym. Zbyt ogólne sformułowanie wydaje się jedynie powtarzać to, co zostało zadane w pytaniu, zamiast na nie odpowiadać.
komar