为什么不是所有的 Linux 软件包/软件都采用 .deb 格式?

为什么不是所有的 Linux 软件包/软件都采用 .deb 格式?

软件包.deb的安装非常简单,就像.exe在 Windows 中一样,只需双击并通过 USC 安装即可。我不知道为什么有些开发人员会选择像.tar.gz(这让我害怕极了)这样安装起来很复杂的格式。

可能并非所有 Linux 分支都兼容.deb;是吗?

为什么 Linux 社区不为包管理设置一些标准,以便每个软件都可以采用这种.deb格式(我喜欢这种格式,因为它安装简单),最终用户将受益。

答案1

这是因为 Linux 生态系统包含许多不同的子分支(点击图片可查看大图)1

在此处输入图片描述

现在,这些发行版之间的一个基本区别是它们使用的包管理器。Debian 及其衍生产品(其中之一是 Ubuntu)使用dpkg处理包的包管理.deb器。另一个大玩家是 RedHat 包管理器(rpm),它处理.rpm包。其他发行版有自己的系统或使用包装器直接从源代码安装,甚至根本没有包管理器。

无论如何,.tar.gz格式是

  1. 实际上不是一种格式。这就是所谓的压缩 tarball。tar创建档案 ( .tar),然后将其传递gzip以压缩它们 ( .gz)。请参阅这里更多细节。

  2. 不是安装程序。它只是文件/目录的集合,在源 tarball 的情况下,是程序的源代码。

  3. 不以任何方式特定于源代码或程序。你可以将其视为.tar.gzWindows(而不仅仅是).zip文件的等价物。它们包含安装程序,或者可以包含 word 文档或其他任何内容。

并非所有 Linux 程序都打包为.deb文件,是因为虽然.deb这种方式确实很流行,但并不适用于所有发行版。因此,开发人员可以尝试将他们的应用程序打包到尽可能多的发行版,或者直接提供源代码,让用户自己编译。直到几年前,绝大多数 Linux 程序都是以这种方式分发的。预打包程序的种类相当少。

近年来,随着该.deb格式的普及度大幅提升,这种情况发生了变化,这在很大程度上归功于 Ubuntu 和 Linux Mint 的普及。

并非每个人都会使用的原因.deb在于,每种方法(dpkg/apt-getrpm/yumpacman)都有其忠实的粉丝。如果我只将我的程序发布为 ,那么.deb并不是每个人都能使用它。确保任何GNU/Linux 用户将能够使用我的软件,将其作为源代码发布并让他们手动编译。

最后要说的是,你真的不应该害怕这样的程序。虽然整理依赖关系确实很麻烦,但大多数开发人员都会在他们的网页上清楚地说明依赖关系,只要你安装了它们,从源码包安装软件就很容易了:

  1. 提取文件

     tar xvzf software.tar.gz
    
  2. 移动到提取文件的新创建的目录中

     cd software/
    
  3. 配置

     ./configure
    
  4. 编译

     make
    
  5. 安装

     sudo make install
    

这一切可以浓缩为:

tar xvzf software.tgz; cd software; ./configure && make && make install

1图片取自这个维基百科页面

答案2

其实还有其他.deb选择

.debpackages 代表debian packages。它是由Debian Linux Distribution

另一个主要参与者rpmRedHat package manager

Linux 依赖开源。因此大多数压缩文件.tar.gz都是源代码

你必须在任何 Linux 发行版上进行编译并运行,如下所示:

tar -xvf yourdownloadedpackagefilename.tar.gz
cd yourdownloadedpackagefilename
./configure
make
make install

笔记:您应该仔细阅读 README 文件,因为并非所有源包的行为都相同!

但在处理包管理器时情况并非如此。它们依赖于发行版。

希望有帮助

我找到了这个引用定义包管理器之间的区别非常有帮助:

这两个组都是“软件包管理器”,它们大大简化了安装、更新、维护和删除软件的过程。“deb”文件供源自 Debian 发行版(Ubuntu 是其变体)的“dpkg”实用程序使用,“rpm”文件供 RedHat 软件包管理器使用,RedHat 软件包管理器是源自 Red Hat 发行版的一个类似但非常不同的实用程序。

在软件包管理器出现之前,安装新软件的过程非常复杂,许多非极客对此望而却步。您必须找到其源代码,然后编译并链接源代码为可执行二进制文件。第一次尝试这样做通常会得到一长串有关缺少库文件的错误消息 - 您必须搜索、安装并重复该过程。

软件包管理器实用程序可以将所有这些“依赖项”列在一个文件中,该文件还包含描述和可运行的二进制程序文件。软件包管理器负责获取所有需要的依赖项,并处理新软件的初始配置。

虽然两种不同类型的管理器本质上执行相同的工作,但它们的文件不能直接互换。确实存在将 RPM 文件转换为 DEB 格式的实用程序,但不能保证转换后的 RPM 文件会自动正确配置 Debian 文件位置标准(在某些方面,该标准与 Red Hat 及其后代的标准有很大不同)。

我希望这能有所帮助;并非所有发行版都使用包管理器,因此,如果您想了解有关“旧方法”的更多信息,可以尝试使用 Slackware 或 GenToo 之类的东西!这可能会告诉您比您愿意学习的更多内容

答案3

确实,因为问题错误

就像问“为什么我也可以买到蛋糕和面粉、鸡蛋和糖?吃蛋糕这么容易,为什么有人还要卖其他东西?”

.deb是包含(通常)已编译程序的软件包,这些程序由某人编译、安装、配置并适应特定操作系统。有人负责处理依赖项、副作用等。请注意,.debUbuntu 和其他几个发行版(如 debian、Mint 等)都使用这种格式……即使您可以在 Ubuntu 中安装 debian .deb,并且通常它可以正常工作,但也不能保证一定如此。其他发行版有不同的打包系统(rpm、pacman,甚至 slackware 的 .tar.gz)。

.tar.gz是一组压缩的存档文件。想想看.zip。它可以是任何东西。软件、照片集、源代码、编译代码,甚至是发行版的软件包,随便什么都可以。

答案4

这是因为其中.tar.gz包含源代码,因此您可以随意浏览。此外,这也使开发人员有机会为您提供README

不要让它们吓到你——你所要做的就是阅读INSTALL通常捆绑的文件(或在 README 中)——

通常,它很简单:

./configure
make
make install

瞧!

相关内容