deb 软件包和 tar 包之间有什么区别?它们各自的优点/缺点是什么?

deb 软件包和 tar 包之间有什么区别?它们各自的优点/缺点是什么?

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

deb 包和 tar 包之间有什么区别?

每种方式有何优点/缺点?

答案1

Tar 包通常是需要编译的源代码。Debs 是预编译的程序,已经针对 Ubuntu/Debian 构建和配置。

我强烈建议在可用时使用 debs,因为它们更简单,并且它们与包管理器集成,因此您可以轻松地卸载它们。

Debs 还会安装所需的任何依赖项。从源代码安装可能会导致所谓的“依赖地狱”。大多数开源程序都依赖于其他几个程序/库才能运行。从源代码安装时,它不会安装这些程序/库,而是(希望)抱怨依赖项未得到满足。然后您尝试安装该依赖项,然后它失败了,需要另一个依赖项,等等。

从源代码安装也可能会将您的文件放在意想不到的位置,因为不同的发行版的布局略有不同。

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

  1. 查看软件中心。这显然是最简单的,尽管软件中心并不全面,并且没有更新到最新版本。

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

  3. 寻找.deb 包。

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

答案2

tar 包只是 zip 等压缩包的另一种形式。尽管压缩格式和技术不同,但它基本上是一组文件和文件夹的容器。

通常,编写软件的个人/团体会将源代码及其所需的文件以 tar 包的形式发布在互联网上。因此,您可以下载、解压、编译并安装该软件。

然而,deb 软件包的作用是通过维护标准来简化您的安装过程。Debian 软件包维护者将获取互联网上可用的软件,将其制作成相应的 .deb 软件包并放入 Debian 存储库中。

在此处输入图片描述

您可以从 Debian 软件包维护者的博客中阅读有关此内容:http://www.j4v4m4n.in/2012/05/01/debian-utsavam-at-mes-kuttippuram-kerala-2/

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

但是如果您使用 tar ball 安装它,您将必须弄清楚该软件依赖什么,并且每次您都必须手动检查您正在安装的软件的依赖项是否已经安装过。

但 apt 会为您完成这一切。

此外,从源代码安装(从 tar 包安装)对于不同的软件有不同的方法。有 GNU 哲学的 configure-make-make install,还有其他方法,具体取决于软件的编写方式。

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

还有一点。什么时候需要从源代码安装?那是从 tar 包安装吗?基本上有两种情况。

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

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

希望这可以帮助。

答案3

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

源代码 tarball(扩展名为.tar.gz.tar.bz2- 或甚至.tgz 或 .tbz2) 只是与实用程序一起打包的文件和目录的集合tar,并且使用gzip或进行压缩bzip2。要构建源代码,您必须:

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

与源码包相比,Debian/Ubuntu 软件包的主要优势在于软件包是“自包含的”,并且其二进制文件是可跟踪的。这意味着解压过程对用户来说是透明的,用户只能看到(大致)每个应用程序一个软件包。用户甚至不需要记住给定应用程序安装了哪些文件以及在哪里安装,因此应用程序的安装/删除(大部分)只需一个指令即可完成。

源码 tarball 相对于二进制软件包的主要优势在于,首先源代码直接在目标机器上编译,然后可以进行相应的优化。此外,即使是最好的软件包系统也会在特定情况下出现故障(例如软件包太新或太旧),并且通常官方软件包在太旧时会被服务器清除。在这些情况下,必须手动在互联网上搜索所需的应用程序和特定版本的特定库以满足其所有依赖项。

答案4

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

与从源代码编译时所谓的“依赖地狱”相反,您实际上可以以这样的方式配置 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文件,那么它们通常就是像上面的答案已经说的那样的那些编译好的软件。

相关内容