Deb包装和tar球有什么区别?每种优点/缺点是什么?


9

我不知道焦油球。大多数软件包以tar球形式提供,但Ubuntu软件包是Debian软件包。

Deb包装和tar球有什么区别?

每个优点/缺点是什么?

Answers:


7

Tar球通常是您必须编译的源代码。Deb是预编译的程序,已经为Ubuntu / Debian构建和配置。

我强烈建议在可用的情况下使用deb,因为它们更容易并且与软件包管理器集成在一起,因此您可以轻松地将其卸载。

Debs还将安装所需的任何依赖项。从源代码安装可能导致被亲切地称为“依赖地狱”。大多数开源程序都依赖于其他几个程序/库来运行。从源代码安装时,它将不会安装这些文件,而是(希望)抱怨未满足依赖性。然后,您尝试安装该依赖项,然后炸开,要求另一个依赖项,依此类推。

从源代码进行安装还会将您的文件放在意想不到的地方,因为不同的发行版将事情安排得有些不同。

当我需要安装程序时,请按以下顺序尝试选项:

  1. 在软件中心中查找。显然,这是最容易的,尽管软件中心并不全面,也不是最新版本。

  2. 尝试查找提供它的存储库。添加存储库将使程序显示在软件中心中,并及时得到升级等。

  3. 寻找一个.deb软件包。

  4. 从源代码安装(tar球)。


6

焦油球只是压缩的另一种形式,例如拉链。尽管压缩的格式和技术不同,但它基本上是一组文件和文件夹的容器。

通常,源代码和所需的文件将由以tar格式编写软件的人员/团体在Internet上提供。因此,您可以下载,解压缩,编译软件并安装。

但是,deb软件包的作用是通过维护标准使此安装过程更容易。互联网上可用的软件将由Debian软件包维护者使用,并放入其相应的.deb软件包中,并放入Debian存储库中。

在此处输入图片说明

您可以从Debian软件包维护者的博客中了解有关它的信息:http : //www.j4v4m4n.in/2012/05/01/debian-utsavam-at-mes-kuttippuram-kerala-2/

至于优点和缺点,.deb软件包由软件包管理器(如apt和aptitude)管理。因此,每当您安装软件时,它们就会自动确定您是否具有在系统上运行该软件所需的依赖关系,并将为您安装它们。

但是,如果要使用tar球安装它,则必须弄清楚该软件所依赖的软件,并且每次必须手动检查所安装软件的依赖项是否以前已经安装过。

但是,apt会为您完成所有这一切。

同样,从源代码安装(从tar球安装)对于不同的软件将具有不同的方法。有GNU的configure-make-make install理念,还有其他方法取决于软件的编写方式。

但是,将它们转换为deb可以完全消除所有这些差异,并使用户更容易安装和使用该软件。

还有一点。您何时需要从源代码安装?那是焦油球出来的吗?基本上有两种情况。

  1. 如果debian打包团队尚未打包软件。
  2. 如果您想为该项目做出贡献。这意味着您可以对源代码进行更改,编译并测试更改。

如果您想了解有关debian打包的更多信息,可以从这里阅读:http : //www.debian.org/doc/manuals/maint-guide/

希望这可以帮助。


1

Debian(以及Ubuntu)软件包是二进制文件和相关安装说明的集合。这意味着程序包本身知道如何安装以及在何处安装,也知道它所依赖的程序包列表。

源压缩包(文件扩展名为.tar.gz.tar.bz2-甚至.tgz的或.tbz2)只是一组文件和目录已与挤在一起tar工具,也压缩与任何gzipbzip2。要构建源代码,您必须:

  1. 使用tar xvfz file.tar.gztar xvfj file.tar.bz2(在空目录中)解压缩文件
  2. 配置软件包./configure(软件包在开始编译之前会测试系统以查看是否一切正常)
  3. 从开始编译 make
  4. 如果需要,请运行make install以将应用程序安装到其“默认”位置(通常在/ usr / {s} bin或/ usr / local / {s} bin中,但这取决于应用程序和发行版)

关于源tarball,Debian / Ubuntu软件包的主要优点是软件包是“自包含的”并且可以跟踪其二进制文件。这意味着拆包过程对于只(大致)每个应用程序看到一个软件包的用户是透明的。用户甚至不需要记住给定应用程序安装了哪些文件以及安装在何处,因此(大多数情况下)应用程序的安装/删除成为一个指令过程。

源代码压缩包相对于二进制软件包的主要优点是,在第一种情况下,源代码直接在目标计算机上编译,然后可以相应地进行优化。此外,即使是最好的软件包系统也可能在特定情况下崩溃(例如,软件包太新或太旧),并且通常,当正式软件包变得太旧时,服务器会清除它们。在这些情况下,必须手动在Internet上搜索所需的应用程序和特定版本的特定库,以满足其所有依赖性。


1
一个小问题。“配置,制作,进行安装”步骤适用于使用GNU automake生成原理的那些软件。有些软件可以通过多种方式从源代码(从tar球)构建。因此,说“要构建源代码,进行配置,进行安装,进行安装”可能是不正确的。最好的放置方法是,“要从源代码安装,请阅读源代码中的README或INSTALL文件,并按照其中提到的步骤进行操作。请参考:sosaysharis.wordpress.com/2011/11/28/…
harisibrahimkv 2012年

是的,我刚才谈到了这种方法,因为绝大多数源代码压缩包都采用了这种方法。
Avio,2012年

那里没有辩论。:)
harisibrahimkv 2012年

1

我可以看到已经发布了一些非常好的答案。但是有一些事情需要解决。

与从源代码进行编译时所谓的“依赖地狱”相反,实际上,您可以通过以下方式配置Ubuntu,即从tarball /任何源进行编译时,它会自动安装那些依赖项。

在此处阅读如何执行此操作:

http://www.howtogeek.com/106526/how-to-resolve-dependencies-while-compiling-software-on-ubuntu/

另外,如果您不考虑该依赖性问题,那么关于tarball的好处是,您可以轻松配置许多与安装相关的内容,例如在哪里安装等,以防从源代码安装。

同样,在这种情况下,“ Debian软件包”一词可能会使您感到困惑。请记住,Debian软件包有两种类型,如下所示:

http://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html

当然,如果您只谈论deb文件,那么它们通常是那些已编译的软件,就像上面已经回答的那样。

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.