打包Linux源代码的标准何时成为.tar.gz?


29

浏览主要为Linux系统开发的开源项目并下载最新软件包时,源代码始终存储在.tar.gz或.tar.bz2文件中。

有什么理由要使用.tar.gz或.tar.bz2而不是.zip或.rar或其他压缩算法(或者如果项目足够小,甚至不压缩它)?


3
您在哪里浏览?如今,大多数项目如今都以VCS存储库URL的形式分发其源代码,而当它们提供归档文件时,通常以.ZIP形式。TGZ已经过时了数十年(尽管一些令人讨厌的人顽固地拒绝获得此信息),而且很长一段时间我都没有看到任何项目在使用它……
Mason Wheeler

4
tar(例如,Tape Archiver)已经是事实上的标准时,甚至Linux,zip和rar都不存在。
SK-logic

19
@梅森惠勒:定义“过时”。只要人们发现它有用并继续使用它,它就不会过时。我认为tar + gz可以完成工作,在很多情况下切换到其他格式只是个问题。像Eclipse(eclipse.org)这样的项目仍然使用它。
乔治

3
@MasonWheeler,ftp.gnu.org例如浏览。这是整个Internet赖以建立的东西。而且,我希望每个人都同意ZIP无论如何在技术上都是次等的。
SK-logic

5
@MasonWheeler和其他人。仅仅因为tar名称中有Tape Archiver并不会使其过时。我认识的每个人都在* nix / BSD世界中使用tar,而使用.zip则相对很少。实际上,当我看到一个zip文件时,我几乎总是质疑它是否是仅Windows的存档。
罗布

Answers:


31

要回答标题中的问题:很早以前,tar.gz / tar.bz2成为分发Linux源代码的标准,这已经超过了20年,甚至可能超过20年。甚至在Linux出现之前就已经很重要了。

实际上,焦油代表(t)猿(ar)香葱。认真思考卷轴,您就会知道它有多老了。ba-dum-bump。

在人们拥有CD刻录机之前,已经在1.44Mb的软盘上发行了软件发行版。该命令将压缩的tar文件切成软盘大小的片段split,这些片段称为tarballs。您可以将他们重新加入cat并提取档案。

要回答另一个为什么不是Zip或Rar的问题,这很简单。tar存档器来自Unix,而其他两个来自MS-DOS / Windows。Tar处理unix文件元数据(权限,时间等),而zip和rar直到最近才处理(它们存储了MS-DOS文件数据)。实际上,zip在开始正确存储NTFS元数据(备用流,安全描述符等)之前花了一段时间。

PKZip中的许多压缩算法是原始制造商专有的,添加到Dos / Windows版本中的最后一个是Deflate(RFC 1951),其性能比Implode稍好,Implode是那里的专有算法,可产生最佳的一般压缩率。Gzip使用Deflate算法。

RAR压缩算法是专有的,但是有免费的解压缩器开源实现。不免费提供RARlab的RAR和WinRAR的正式版本。

Gzip使用deflate算法,因此不比PKZip差。Bzip2的压缩率略高。

TL; DR版本:

tar.gz和tar.bz2来自Unix,因此Unix人们使用它们。Zip和Rar来自DOS / Windows世界,因此DOS / Windows用户可以使用它们。tar几十年来,它一直是捆绑* nix中的内容档案的标准。


1
澄清一下:开源RAR实现基于RARlab自己的开源解压缩器。我还记得,它比大多数其他压缩器都要新得多,最早出现在Windows上是在之前更流行的ACE,ARJ和ARC之后,它们依次取代了其他压缩器。直到最近才真正出现在Unix上。
greyfade 2012年

较小的更正:RAR算法打开:fedoraproject.org/wiki/Licensing
Sven Slootweg

16

我不知道什么时候使用,但是我可以想象它被使用的原因是:tar是传统的(它很老了);从命令行轻松管理;tar保留ZIP或RAR可能不会的文件系统信息;并且两次通过过程意味着压缩效率更高(一个大文件的压缩比许多小文件的压缩效果更好)。

bzip2(.bz2)似乎正在取代gzip(.gz),因为它提供了更好的压缩效果,与gzip本身取代了较早的compress(.Z)几乎一样。


3
xz(LZMA)似乎正在取代压缩率很重要的bzip2(.xz文件比gzip 小30%)。Gzip可能是最快的。
萨斯坦宁

8

本质上,归档和压缩是两个不同的操作。tar.gz非常清楚地表明了这一意图:压缩的存档,而.zip或.rar只是表明它是一些压缩的东西。



4

它是传统的,无处不在,并且有效。另外,我认为这有点不言而喻。

更新资料

抱歉,我忘记了大多数人不了解我所了解的知识或在异构环境中担任管理员的经验。

传统习俗或习俗随着时间而根深蒂固。我们知道它具有历史基础,因为tar源自Tape ARchive,它引用了旧的磁带备份技术。它在1979年的各种Unix操作系统中具有悠久的历史。第七版Unix,它取代了tp。Linux系统通常是Linux内核和GNU软件的结合体,而GNU tar是其中的一部分。所有这些tar历史记录意味着大多数经验丰富的技术人员都知道如何使用它,而不必参考文档,因为它根深蒂固。对于较新的用户,有很多文档,因为该软件已经存在很长时间了。

随处可见或随处可见。某种程度上可以接受的误用是外观并不普遍,但是却有很大一部分人口被普遍接受。 第七版Unix是Unix最大版本的始祖,包括Sun OS / Solaris,AIX,HPUX,AIX,BSD等unix上tar的不同实现之间。由于MacOS(自OS 10起)一直基于BSD,因此它也具有tar。Linux使用包含GNU Tar的GNU软件,因此tar在所有版本的Linux上都可用。而且,虽然不能作为内置工具使用,但Windows上有许多tar的实现,包括通过cygwin和本地的 GNU Tar也存在高度的交叉兼容性。尤其是在大多数Unices和Windows上都可以使用GNU Tar,这使其成为跨OS进行文件迁移的理想选择。

作品在它已经很长一段时间没有重大的修改工作。它在开箱即用的所有主要平台上均可用(Windows除外,在Windows上它作为附加软件提供)。所有主要平台都支持该格式,这有利于平台之间的互换。不仅它仍然被用作制作易于移植的归档文件的方法,而且tar管道是用于复制目录树(尤其是在异构环境中)的标准Unix习惯用法。简而言之,它已经存在并且仍在大量使用,因为它可以做得很好。


5
在所有应得的尊重下,这个答案简短,简单,而且...对我不起作用
gnat

5
... 1)“传统”软件开发中的权重不到零;否则,我们都将使用打孔卡在IBM-360上编码COBOL;说“它是传统的”完全没有解释……
gnat 2012年

5
... ... 2)“无处不在” ...真的吗?从Unix切换到Windows时,我注意到的一件事是,没有人使用tar,没有tar,一切都会很好。经过几年的快乐编码,当我一次需要tar时,我花了相当长的时间才能找到Windows版本。那无处不在吗?让我休息一下
gna

4
... 3)“有效” -很好,没有解释什么工作以及为什么要用焦油来做,这只是挥手致意。很久以前,但是当我了解焦油时,我仍然记得那种震惊。不压缩的实用程序对我来说毫无用处。当然我弄错了,但是如果回到那时,有人会尝试用一个单词的陈述来“教育”我,就像它起作用一样我会认为“不,它会自慰”……
gnat 2012年

4
...总结起来,这种零努力,纯粹的观点缺乏解释和上下文。所作的陈述没有得到解释,也没有任何备份。过于笼统的措词似乎只是在重申所问问题而不是回答问题。
gnat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.