Wann wurde der Standard für das Packen von Linux-Quellcode .tar.gz?

29

Wenn Sie Open-Source-Projekte durchsuchen, die hauptsächlich für Linux-Systeme entwickelt wurden, und die neuesten Pakete herunterladen, wird der Quellcode immer in einer .tar.gz- oder .tar.bz2-Datei gespeichert.

Gibt es einen Grund für die Verwendung von .tar.gz oder .tar.bz2 anstatt von .zip oder .rar oder einem anderen Komprimierungsalgorithmus (oder es sogar unkomprimiert zu lassen, wenn das Projekt klein genug ist)?

Joe Z.
quelle
3
Wo stöbern Sie? Die meisten Projekte verteilen heutzutage ihren Quellcode in Form einer VCS-Repository-URL, und wenn sie Archive bereitstellen, erfolgt dies normalerweise in .ZIP-Form. TGZ ist seit Jahrzehnten veraltet (trotz der hartnäckigen Weigerung einiger widerwärtiger Leute, die Nachricht zu erhalten), und ich habe seit langer Zeit kein Projekt mehr gesehen, das es verwendet ...
Mason Wheeler
4
Linux, zip und rar existierten nicht einmal, als tar(dh Tape Archiver) bereits ein Standard de facto war.
SK-logic
19
@Mason Wheeler: Definiere "obsolet". Ein Format ist nicht veraltet, solange die Leute es für nützlich halten und es weiterhin verwenden. Ich denke, tar + gz macht den Job und das Umstellen auf ein anderes Format ist in vielen Fällen nur Geschmackssache. Projekte wie Eclipse ( eclipse.org ) verwenden es immer noch.
Giorgio
3
@MasonWheeler, stöbern Sie ftp.gnu.orgzum Beispiel. Darauf baut das ganze Internet auf. Und ich hoffe, jeder wird zustimmen, dass ZIP sowieso technologisch unterlegen ist.
SK-logic
5
@ MasonWheeler und andere. Nur weil tar Tape Archiver im Namen hat, ist es noch lange nicht veraltet. JEDER, von dem ich weiß, dass er in der * nix / BSD-Welt tar verwendet, und die Verwendung von .zip ist relativ selten. Wenn ich eine Zip-Datei sehe, frage ich mich fast immer, ob es sich um ein reines Windows-Archiv handelt.
Rob

Antworten:

31

Zur Beantwortung der Frage in der Überschrift: tar.gz / tar.bz2 wurde vor sehr langer Zeit zum Standard für die Verteilung von Linux-Quellcode, wie in weit über zwei Jahrzehnten und wahrscheinlich in einigen weiteren Jahrzehnten. Bezeichnenderweise bevor Linux überhaupt existierte.

Tatsächlich steht Teer für (t) ape (ar) chive. Denken Rollen hart, und Sie werden eine Vorstellung bekommen , wie alt es ist. Ba-Dum-Beule.

Bevor Menschen CD-Brenner hatten, wurden Distributionen von Software auf 1,44-MB-Disketten ausgegeben. Die komprimierte TAR-Datei wurde durch den splitBefehl in Teile mit Diskettengröße zerlegt , und diese Teile wurden Tarballs genannt . Sie würden sie wieder zusammenfügen catund das Archiv extrahieren.

Die andere Frage, warum nicht Zip oder Rar, zu beantworten, ist ganz einfach. Der tar-Archivierer stammt von Unix, während die beiden anderen von MS-DOS / Windows stammen. Tar verarbeitet Unix-Dateimetadaten (Berechtigungen, Zeiten usw.), während zip und rar dies bis vor kurzem nicht getan haben (sie haben MS-DOS-Dateidaten gespeichert). Tatsächlich hat zip eine Weile gebraucht, bis NTFS-Metadaten (alternative Streams, Sicherheitsbeschreibungen usw.) ordnungsgemäß gespeichert wurden.

Viele der Komprimierungsalgorithmen in PKZip sind Eigentum des Originalherstellers, und der letzte, der zu den Dos / Windows-Versionen hinzugefügt wurde, war Deflate (RFC 1951), der etwas besser abschnitt als Implode, der proprietäre Algorithmus, der die beste allgemeine Komprimierung erzeugte . Gzip verwendet den Deflate-Algorithmus.

Der RAR-Komprimierungsalgorithmus ist proprietär, es gibt jedoch eine kostenlose Open-Source-Implementierung des Dekomprimierers. Offizielle Releases von RAR und WinRAR von RARlab sind nicht kostenlos .

Gzip verwendet den Deflate-Algorithmus und ist daher nicht schlechter als PKZip. Bzip2 erhält etwas bessere Kompressionsverhältnisse.

TL; DR-Version:

tar.gz und tar.bz2 stammen von Unix, daher werden sie von Unix-Leuten verwendet. Zip und Rar stammen aus der DOS / Windows-Welt, daher werden sie von DOS / Windows-Benutzern verwendet. tarist seit mehreren Jahrzehnten der Standard für die Bündelung von Zeugarchiven in * nix.

ikmac
quelle
1
Einige Erläuterungen: Open-Source-RAR-Implementierungen basieren auf dem Open-Source- Dekomprimierer von RARlab . Es ist auch bedeutend neuer als die meisten anderen Kompressoren, die lange nach den zuvor populäreren Komprimierungsprogrammen ACE, ARJ und ARC als erste auf Windows-Systemen erscheinen. Bis vor relativ kurzer Zeit ist keines davon wirklich unter Unix aufgetaucht.
greyfade
Kleine Korrektur: Der RAR-Algorithmus ist nicht geöffnet: fedoraproject.org/wiki/Licensing:Unrar?rd=Licensing/Unrar
Sven Slootweg
16

Ich weiß nicht wann, aber ich stelle mir vor, der Grund, warum es verwendet wird, ist eine Kombination aus: Teer ist traditionell (es ist sehr alt); einfache Verwaltung über eine Befehlszeile; Unter Beibehaltung des Dateisystems werden Informationen angezeigt, die ZIP oder RAR möglicherweise nicht enthalten. Durch den Two-Pass-Prozess ist die Komprimierung effizienter (eine große Datei komprimiert besser als viele kleine Dateien).

bzip2 (.bz2) scheint gzip (.gz) zu verdrängen, da es eine bessere Komprimierung bietet, ähnlich wie gzip selbst die frühere Komprimierung (.Z) verdrängt.

John Bickers
quelle
3
Und xz (LZMA) scheint bzip2 zu verdrängen, wo es auf die Komprimierungsrate ankommt ( .xz-Dateien sind 30% kleiner als gzip). Gzip ist wahrscheinlich der schnellste von allen.
Sastanin
8

Im Wesentlichen sind Archivieren und Komprimieren zwei verschiedene Vorgänge. Das tar.gz zeigt sehr deutlich die Absicht: Ein komprimiertes Archiv, wohingegen ein .zip oder .rar nur komprimierte Inhalte anzeigt.

Pieter B
quelle
5

tarist traditionell in Unix, kombiniert Dateien, komprimiert sie aber nicht unbedingt. Genauso einfach ist es, sie mit .g oder .bz oder .b2 zu komprimieren.

Zipund rarsind in der Windows-Welt anständig und verbreitet

Martin Beckett
quelle
Ach ja, meine Frage war nicht spezifisch genug. Ich habe hauptsächlich über Linux / Unix-Code gesprochen.
Joe Z.
4
+1 - aber zip ist seit einiger Zeit nicht mehr geschützt.
Billy ONeal
Ja, eine Untergruppe von zip ist jetzt Standard: iso.org/iso/home/store/catalogue_tc/…
rogerdpack
4

Es ist traditionell, allgegenwärtig und funktioniert. Außerdem dachte ich, es sei etwas Selbstverständliches.

Aktualisieren

Ich entschuldige mich dafür, dass ich vergesse, dass die meisten Leute nicht wissen, was ich weiß oder Erfahrung als Administrator in heterogenen Umgebungen haben.

Tradition wie in einer Sitte oder Praxis im Laufe der Zeit verankert. Wir wissen, dass es eine geschichtliche Grundlage hat, da tar von Tape ARchive abgeleitet ist, das auf die alte Bandsicherungstechnologie verweist. Es hat eine lange Geschichte in den verschiedenen Unix-Betriebssystemen, die bis 1979 in der 7. Ausgabe von Unix zurückreichen, wo es tp ersetzte. Linux-Systeme sind in der Regel eine Verschmelzung von Linux-Kernel und GNU-Software, zu der GNU tar gehört. All diese Teerhistorie bedeutet, dass die Mehrheit der erfahrenen Techniker weiß, wie man es benutzt, ohne auf die Dokumentation zurückgreifen zu müssen, weil es tief verwurzelt ist. Für neuere Benutzer gibt es eine Menge Dokumentation, da es die Software schon so lange gibt.

Allgegenwärtig wie in Erscheinung oder überall zu finden. Ein etwas akzeptierter Missbrauch liegt vor, wenn das Erscheinungsbild nicht universell ist, sondern in einem ausreichenden Prozentsatz der Bevölkerung, um als allgegenwärtig akzeptiert zu werden. 7. Edition Unix ist der Vorfahr der größten Unix - Versionen einschließlich Sun OS / Solaris, AIX, HP - UX, AIX, BSD, etc . Es gibt auch ein hohes Maß an Kompatibilität zwischen den verschiedenen Implementierungen von tar unter Unix . Da MacOS (seit OS 10) auf BSD basiert, hat es auch tar. Linux verwendet GNU-Software, die GNU Tar enthält, sodass tar für alle Linux-Versionen verfügbar ist. AND, obwohl nicht als eingebaute Version verfügbar, gibt es unter Windows viele Implementierungen von tar, einschließlich GNU Tar über cygwin und nativ. Insbesondere GNU Tar ist auf den meisten Unices und Windows verfügbar, sodass es die gute Wahl für Dateimigrationen unter verschiedenen Betriebssystemen ist.

Funktioniert so, wie es lange Zeit ohne größere Änderungen funktioniert hat. Es ist sofort auf allen gängigen Plattformen verfügbar (mit Ausnahme von Windows, wo es als zusätzliche Software verfügbar ist). Das Format wird auch auf allen wichtigen Plattformen unterstützt, was den Austausch zwischen Plattformen erleichtert. Es wird immer noch nicht nur verwendet, um leicht zu portierende Archive zu erstellen, sondern eine Tar-Pipe ist auch ein Standard-Unix-Idiom zum Kopieren von Verzeichnisbäumen, insbesondere in heterogenen Umgebungen. Kurz gesagt, es gibt es schon und es wird immer noch intensiv genutzt, weil es das tut, was es gut macht.

dietbuddha
quelle
5
mit allem Respekt, ist diese Antwort kurz, stark vereinfacht, und es ... tut irgendwie nicht Arbeit für mich
gnat
5
... 1) "traditionell" hat bei der Softwareentwicklung ein Gewicht von weniger als Null; Andernfalls würden wir alle COBOL auf IBM-360 mit Lochkarten codieren. "Es ist traditionell" zu sagen, erklärt überhaupt nichts ...
Mücke
5
... 2) "allgegenwärtig" ... wirklich? Als ich von Unix auf Windows umgestiegen bin, ist mir aufgefallen, dass niemand tar verwendet hat und alles ohne alles gut lief. Als ich nach einigen Jahren glücklichen Programmierens einmal nach Teer suchte, brauchte ich eine ganze Weile, um die Windows-Version zu finden. Das ist allgegenwärtig? gib mir eine Pause ...
Mücke
4
... 3) "es funktioniert" - auch ohne zu erklären, welche Art von Arbeit und warum von Teer erledigt wird, ist dies nur von Hand winken. Es ist lange her, aber ich erinnere mich noch an einen Schock, als ich etwas über Teer erfuhr. Dienstprogramm, das nicht komprimiert, fühlte sich für mich einfach nutzlos an. Natürlich habe ich mich geirrt, aber wenn damals jemand versuchen würde, mich mit einer Ein-Wort-Aussage zu "erziehen", wie es funktioniert, würde ich denken, "nein, es masturbiert" ...
gnat
4
... Zusammenfassend lässt sich festhalten, dass diese Null-Anstrengung-Antwort, die sich nur aus einer Meinung ergibt, keine Erklärung und keinen Kontext enthält. Erklärungen werden weder erklärt noch mit irgendetwas belegt. Übermäßig verallgemeinerte Formulierungen scheinen lediglich das Gesagte zu wiederholen , anstatt es zu beantworten.
gnat