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

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

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

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

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

在此处输入图像描述

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

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

  1. 实际上不是一种格式。 这就是所谓的压缩tarball。 tar创建档案( .tar )然后通过gzip传递压缩它们( .gz )。 有关详细信息,请参见此处

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

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

所有Linux程序都没有打包为.deb文件的原因是因为虽然.deb确实很受欢迎,但它并不适用于所有发行版。 因此,开发人员可以尝试将应用程序打包为尽可能多的发行版,或者只是使源代码可用并让用户自己编译它。 直到几年前,绝大多数Linux程序才以这种方式分发。 各种预先打包的程序非常小。

近年来,随着.deb格式的大量普及,这已经发生了变化,这主要是由于Ubuntu和Linux Mint的相应普及。

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

作为最后一点,你真的不应该害怕这样的节目。 虽然排除依赖关系确实很麻烦,但是大多数开发人员都会清楚地说明他们网页上的依赖关系,只要你安装了它们,从源代码tarball安装软件真的很容易:

  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从此维基百科页面拍摄的图像。

实际上还有.deb包的替代品

.deb包代表debian packages 。 它由Debian Linux Distribution

另一个主要参与者是rpm ,它代表RedHat package manager

Linux依赖于开源。 所以像.tar.gz这样的大多数压缩文件都是源代码

您必须在任何Linux发行版上编译和运行,如下所示:

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

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

处理包管理器时不是这种情况。 他们依赖于发行版。

希望有所帮助

我发现这个引用非常有用,它定义了包管理器之间的区别:

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

在软件包管理器开始使用之前,安装一个新的软件是一个复杂的过程,关闭了许多非极客。 您必须找到其源代码,然后编译并将该源链接到可执行的二进制文件。 第一次尝试这样做通常会导致一长串关于缺少库文件的错误消息 – 您必须搜索,安装和重复该过程。

包管理器实用程序使得在单个文件中列出所有这些“依赖关系”成为可能,该文件还包括描述和可立即运行的二进制程序文件。 包管理器负责获取所有需要的依赖项,并处理新软件的初始配置。

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

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

真的,因为这个问题是错误的

想问“为什么我也可以买蛋糕和面粉,鸡蛋,糖呢?只吃蛋糕这么容易,为什么有人卖掉所有其他东西呢?”

.deb是具有(通常)编译程序的程序包,有人编译,安装,配置和适应特定操作系统。 有人负责依赖,副作用等。请注意.deb格式是由Ubuntu和其他几个发行版使用的,比如debian,Mint等等……即使你可以在Ubuntu中安装debian .deb,通常也会工作,不保证如此。 其他发行版有不同的包装系统(rpm,pacman,甚至.tar.gz用于slackware)。

.tar.gz是一组压缩的存档文件。 想想.zip 。 它可能是什么。 软件,照片集,源代码,编译代码,甚至是发行版的软件包,都可以命名。

正如Debian常见问题解答中所述 :

包通常包含实现一组相关命令或function所需的所有文件。 有两种类型的Debian软件包:

二进制包,包含可执行文件,配置文件,人/信息页,版权信息和其他文档。 这些包以Debian特定的存档格式分发,通常通过具有“.deb”文件扩展名来区分。 二进制包可以使用Debian实用程序dpkg解压缩,也可以通过aptitude之类的前端解压缩。

源包,包含描述源包的.dsc文件(包括以下文件的名称),.orig.tar.gz文件,包含gzip压缩tar格式的原始未修改源,通常为.diff。包含特定于Debian的原始源更改的gz文件。 实用程序dpkg-source打包并解压Debian源文件。 程序apt-get可以用作dpkg-source的前端。

这是因为.tar.gz包含了源代码,所以如果你愿意的话,你可以逛一逛。 此外,这也使开发人员有机会为您提供README

不要让他们吓到你 – 你所要做的就是阅读通常捆绑在一起的INSTALL文件(或者在自述文件中另外) –

通常,它只是:

 ./configure make make install 

瞧!