什么是.deb和.rpm,它们与.msi有何不同?[关闭]


30

这些文件格式是什么?它们与.msiWindows中的格式有何不同?这些程序包管理方案的优缺点又是什么?


.deb和.rpm与.msi相比与.exe更相似。
伊格纳西奥·巴斯克斯

注意:在互联网上的其他地方询问“ rpm vs deb / dpkg的优缺点是什么”,就带有煽动火焰战争的可能性。
13年

Answers:


40

如文件.deb.rpm更类似于一个.zip文件。它们是文件和子目录的目录树,其中包含与特定应用程序和/或文件库相关的文件。

发行版

这些.deb文件用于从Debian(Ubuntu,Linux Mint等)派生的Linux发行版。这些.rpm文件主要由基于Redhat的发行版(Fedora,CentOS,RHEL)以及openSuSE发行版的发行版使用。

他们有什么特别之处?

这些文件还有另一个与众不同的特征,.zip它们可以与文件区分开来,因为它们可以包含一个规范,该规范包含一些规则,这些规则告诉安装在这些文件之一中的系统上运行的程序包管理器软件以执行其他任务。这些任务包括以下内容:

  • 在系统上创建用户帐户
  • 创建/修改实际上不在.deb.rpm文件中的配置文件
  • 安装后设置文件的所有权/权限
  • 在安装软件包的系统上以root身份运行命令
  • 依赖关系,两种格式都可以包括名称或程序包和/或服务名称,它们必须在安装之前出现在系统上。

.msi文件呢?

.msi文件类似于.deb.rpm文件,但可能更复杂。这些.msi文件由Windows Installer使用,并提供其他功能,例如:

  • GUI框架
  • 卸载序列的生成
  • 内部框架-供第三方安装程序使用
  • 回滚
  • 广告
  • 用户界面
  • 等等

如果您需要更深入的解释,建议您浏览这些主题的各个Wikipedia页面。

参考文献


由于答案是从“ .deb和.rpm之类的文件更类似于.zip文件”开始的,因此值得一提的是deb软件包实际上是ar归档文件,而rpm是(可能是部分)cpio归档文件。对于debs,很容易验证deb可以用打开ar -x。对于rpm,我不知道是否可行。
Faheem Mitha 2013年

@FaheemMitha:rpm2cpio package.rpm | cpio -idv
ninjalj 2013年

@ninjalj-谢谢,我忘记添加该命令。当我只需要一个或两个文件时,就用它来解包rpm。通常是.spec文件。
slm

@ninjalj谢谢,我不知道那个。
Faheem Mitha 2013年

31

其他答案触及的品质.deb.rpm类似于.msi。它们都包含压缩格式的软件,可以做一些额外的事情。已经提到的那些额外内容包括添加用户,安装前和安装后任务,在系统中注册程序(例如Windows注册表,xdg-dirs,OpenRC / systemd init等)。

格式(也是一个巨大的优点)与众不同的是依赖性。这两个.deb.rpm文件可以和待办事项列表的名称,并且必须安装为先决条件的软件其他程序的版本。就其本身而言,这只是提供信息,但是...

通常,您不会像使用文件那样直接与文件交互.deb和归档。实际上,如前所述,a 通常只是一个用xz压缩的存档(ar或tar),其中包含的文件位于特定的目录布局中。而是使用诸如和之类的工具来操纵这些文件。.rpm.msi.debdpkgrpm

dpkg并且rpm将安装的内容.deb.rpm文件,并验证是否已安装的所有先决条件的软件。运行这些程序类似于单击.msi文件。但是,用户通常不与交互dpkgrpm使用apt-getyum安装软件包。这些工具在Windows上没有确切的类似物。

双方apt-getyum能够从远程(或本地)仓库取文件,并使用存储在依赖信息.deb.rpm文件的获取和安装任何先决条件没有得到满足。使用这些工具,我不需要知道或担心我需要什么其他软件,我只需指定apt-get install chromium并知道apt-get可以确保安装了gtk +,alsa,某些X库等,而无需手动查找和安装这些工具,.deb并且.rpm文件。

apt-get并且yum是两个大的程序包管理器,您还会发现emergepacman在那里,它们执行相同的工作,尽管具有不同的底层机制。


7
+1讨论依赖性管理。这不应该被忽视。
ldrumm

1
注意:相信.debs是使用ar实用程序打包的。不知道为什么。
13年

1
另外,如果您要算作emerge软件包管理器,也许您还应该考虑BSD端口(尽管我对它们并不了解,所以我不确定它们是否在GNU / Linux)。
13年

3
@strugee是的,我进行了编辑以反映这一点。从技术上讲,portage是包管理引擎的背后emerge,它与port非常相似。它全部基于源代码且可配置,但是如果命令将安装/卸载,处理依赖关系并保留已安装软件包的数据库,我将其称为软件包管理器。好评论。
casey 2013年

@casey:在哪里可以获取有关dpkg和rpm的基本机制的更多信息?
deathholes 2013年

4

它具有与Windows下的MSI文件完全相同的功能:

  • 它将软件注册到注册表中,
  • 它会注册与该软件包一起安装的文件。

在Linux下,它们还管理其他软件包之间的依赖关系。

这种程序包管理格式还可以做很多其他事情,但这是主要功能。


2

.rpm文件是RPM软件包,是指Red Hat和Red Hat派生的发行版(例如Fedora,RHEL,CentOS)使用的软件包类型。.deb文件是DEB软件包,这是Debian和Debian衍生产品(例如Debian,Ubuntu)使用的软件包类型。

下载后,通常分别通过rpmdpkg命令将它们安装在相关发行版上。换句话说,它们是由安装的文件rpmdpkg而非.msi.exe这是自己安装的可执行安装文件。

RPM和DEB软件包在许多方面与MSI不同。

  • 如上所述,它们是需要其他工具(即rpmdpkg)安装的文件。
  • 安装后,它们将添加到数据库中,而MSI文件中不是这种情况。MSI文件在注册表中列出了该程序,但是“控制面板”进行的卸载不太可能从磁盘上完全删除所有已安装的文件。因此,当卸载RPM和DEB软件包时,所有文件都会被干净地删除。
  • 它们通常不是直接下载和安装,而是通过软件包管理器(例如yum和)直接进行aptitude-有所谓的存储库,提供针对相关系统编译的软件包,并且软件包管理器将自动从存储库中的数据安装所有依赖项。
  • 已安装的软件包通常会运行多个配置工具,例如,如果在已经安装了LightDM的系统上安装GDM,则这些工具会询问您是否希望使用LightDM的GDM。
  • 在安装软件包时,除了依赖项以外,建议使用一些软件包,这些软件包显示不是必需的软件包,但对用户可能有用。

1

两者.deb.rpm都是GNU / Linux发行版的软件包,包含软件(程序,应用程序等)以及“ * installer *”软件的有关软件本身的信息以及有关如何安装以及在何处安装的说明。正确地。

  • .debDebian软件包(基于Debian(基于)的发行版)。通过例如apt/ aptitude(命令行)或通过“ Synaptic ”,“ Ubuntu软件中心 ”,“ Gdebi ”等图形化安装。
  • .rpmRed Hat软件包管理器:在Fedora / Red Hat(基于Linux)发行版中。通过(例如yum)命令行安装,或通过“ yumex以图形方式安装
  • .msi是→ Microsoft Installer:与上面相同,对于Microsoft Windows OS

安装程序本身也可以处理维护,更新和/或删除软件包。另外:这里的“ 安装程序 ”是指可以正确完成此任务的软件-当然,它也为用户本身提供了上述信息,以手动完成这些任务。


1
PackageKit不是一个应用程序。它是针对不同发行版中不同程序包管理器的抽象库。
13年

@strugee dang,以为是这个名字。我真的希望yumex是正确的名字……谢谢您的提示
erch 2013年

我相信Fedora的默认设置是GNOME软件。
13年

@strugee我试了一段时间Fedora,使用LXDE并想起了用于软件包管理的图形前端,但是名字是……我想,无论什么方法都
可以满足

1

.deb:Debian软件包,用于基于Debian的Linux发行版,例如Ubuntu,Linux Mint等。

.rpmrpm用于基于Red Hat的Linux发行版(例如RHEL,Fedora和CentOS)的安装程序

.msi:Windows平台的二进制安装程序


欢迎参加Stack Exchange!关于您为何被拒绝投票的解释:我不是被拒绝投票的两个人之一,但是我猜他们是这样做的,因为您是在暗示Debian和/或Ubuntu不是GNU / Linuxes,那是假。他们是。(除了Debian,Ubuntu和Fedora之外,还有更多的发行版。)此外,您并没有真正解释任何东西。
strugee

1
更新:编辑以消除这种含意
Davidson Chua 2013年

我猜这些下注实际上只是为了对文件的含义进行一行描述,而不是对这些软件包之间的区别进行实际说明。看看这里选择的答案,这就是他们期望从答案中获得的质量:)
Munim 2013年
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.