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

dea*_*les 43 rpm dpkg package-management

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

slm*_*slm 60

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

发行版

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

他们有什么特别之处?

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

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

.msi 文件呢?

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

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

如果您想要更深入的解释,我建议您查看有关这些主题的各种维基百科页面。

参考

  • 由于答案以“诸如 .deb 和 .rpm 之类的文件更类似于 .zip 文件”开头,因此可能值得一提的是 deb 包实际上是 `ar` 档案,而 rpms 是(可能部分地)cpio 档案。在 debs 的情况下,很容易验证 deb 可以用 `ar -x` 解包。在 rpm 的情况下,我不知道这是否可能。 (3认同)

cas*_*sey 35

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

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

你通常不直接与交互.deb.rpm文件你做的方式.msi文件。事实上,正如前面提到的,a.deb通常只是一个用 xz 压缩的存档(ar 或 tar),其中包含特定目录布局中的文件。相反,你等工具dpkg,并rpm操纵这些文件。

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在那里,尽管具有不同的底层机制,但它们执行相同的工作。

  • +1 谈论依赖管理。这不应该被忽视。 (10认同)
  • @strugee 是的,我已经编辑以反映这一点。同样在技术上,portage 是`emerge` 背后的包管理引擎,它与ports 非常相似。它都是基于源代码且非常可配置的,但如果一个命令将安装/卸载、处理依赖项并保留已安装包的数据库,我将称其为包管理器。好评论。 (3认同)