dpkg 和 aptitude/apt-get 有什么区别?

Ani*_*kur 148 aptitude apt dpkg

通过 安装软件时dpkg -i packageA.deb,是否会packageA自动下载并安装所需的依赖项?这与使用apt-get或 有aptitude什么不同?

Ala*_*Ali 203

不,dpkg只安装一个包,所以这样做dpkg -i packageName.deb只会安装这个Deb包,并且会通知你需要安装的任何依赖项,但它不会安装它们,也不会配置,packageName.deb因为……依赖项是不在那里。

apt-get是一个包管理系统,用于在基于 Debian 的 Linux 发行版上处理 Deb 包的安装。包管理系统是一组工具,可帮助您轻松安装、删除和更改包。所以apt-get就像一个聪明dpkg

我喜欢这样思考时间线(以下只是我从经验中讲出来的。它只是为了让你对整个事情有一个想法):

  • 他们想出了一种将应用程序文件“存储”在“包”中的方法,以便可以轻松安装。于是,Deb 包(.deb扩展文件)诞生了。

    一个.deb文件包含一个应用程序来运行,以及所需要的文件(我喜欢叫它) “元数据”保存其他信息,如依赖应用需要的名字。如果要查看.deb文件的内容,可以使用命令dpkg -c packageName.deb,如果要查看此“元数据”信息,请使用命令dpkg -I pacakgeName.deb(如果只想查看依赖项,请执行dpkg -I packageName.deb | grep Depends)。

  • 他们需要一个工具来安装这些.deb文件,所以他们想出了这个dpkg工具。然而,这个工具只会安装.deb文件,但不会安装它的依赖项,因为它没有这些文件,并且它无权访问“存储库”来从中提取依赖项。

  • 然后,他们想出了apt-get,它可以自动解决上一点中的问题。在引擎盖下,apt-get基本上是dpkg(我喜欢将其视为apt-get的前端dpkg),但它是一个聪明的人,它将寻找依赖项并安装它们。它甚至会查看当前安装的依赖项并确定没有被任何其他软件包使用的依赖项,并会通知您可以删除它们。

aptitude然后就来了。它使用apt-get使用并且实际上具有交互式 UI(用户界面)。如果您想查看此 UI,只需aptitude在终端中输入即可。那是 aptitude。它利用库提供比apt-get. 例如,aptitude会自动删除符合条件的包,而apt-get需要一个单独的命令来这​​样做。但是,最终,在做sudo aptitude install packageName.deb应该至少是一样的sudo apt-get install packageName.deb。我不知道这里和那里可能存在细微的差异,但它们都会查找依赖项并执行所有这些操作。你可以阅读这里的答案对之间的差异的详细信息aptitudeapt-get

此外,aptitude没有超级牛的力量。

编辑:显然,确实如此。aptitude -v[v[v[v[v]]]] moo.

aptitude默认情况下可能未安装。要安装它,请执行sudo apt-get install aptitude或单击此:aptitude安装能力.


额外的

以下信息并没有真正直接回答“ dpkg 和 aptitude/apt-get 之间有什么区别? ”但它有助于大局。


来自Carlos Campderrós评论如下

gdebi是另一种介于apt-get和之间的工具aptitude。当您使用它安装.deb包 ( gdebi packageName.deb) 时,它会识别缺少的依赖项,使用 安装它们apt-get,最后使用 安装和配置包dpkg。它甚至还有一个简单而整洁的 GUI,可以为您提供有关.deb包、包中包含的文件以及需要安装哪些依赖项的信息。要查看此 GUI,您需要执行gdebi-gtk packageName.deb. 您可以gdebi通过安装sudo apt-get install gdebi或单击此来尝试:gdebi安装 gdebi.


我不想混淆任何人,但只是给您介绍另一部分图片,还有另一种流行的 Linux 包格式,称为 RPM,其文件具有.rpm扩展名。这种包格式用于基于RPM 的Linux 发行版(例如 Red Hat、CentOS 和 Fedora)。他们使用命令rpm来安装一个包,并且yum是它的前端,它是聪明的。所以他们的.rpm文件就是我们的.deb文件,他们的rpm工具就是我们的dpkg工具,他们yumapt-get.

来自Paddy Landau评论如下

alien是一个在.rpm.deb包之间转换的工具。所以,如果你曾经陷入其中,你有一个情况.rpm包,你想在你的Ubuntu(或任何其他基于Debian的发行版)安装,您可以使用命令alien rpm_packageName.rpm将其转换为.deb,然后用安装它dpkg。您可以使用 进行相反的操作(转换.deb.rpmalien -r packageName.deb

  • 这非常有用,正是我正在寻找的。发送! (6认同)
  • 此外,您可以使用将 `apt-get`/`aptitude` 与 `dpkg` 混合在一起的 `gdebi`(`apt-get install gdebi-core`)。你用 `gdebi some_package.deb` 调用它,它会分析它的依赖关系,调用 `apt-get` 来安装缺少的那些,当所有的依赖都满足时,然后调用 `dpkg` 来最终安装你的包。 (4认同)
  • @Alaa 在 **Extra** 下,你还可以提到 `alien` 在 `.rpm` 和 `.deb` 之间转换包。这对于可用于 RPM 但不适用于 DEB 的包很有用(反之亦然)。例如,`alien packagename.rpm` 使其可用于 Ubuntu。 (2认同)

Sim*_*mon 7

apt-get

包管理通过apt-get/etc/apt/sources.list文件一起运行。

apt-get install <package_name> 将新软件包安装到您的计算机上。

apt-get build-dep <package_name> 此命令搜索存储库并安装 . 如果包不在存储库中,它将返回错误。

apt-get install <package1_name> <package2_name> <package3_name> apt-get 允许安装多个包。用空格分隔包。

auto-apt run <command_string> 调用时,auto-apt 命令会在缺少文件访问权限时自动安装软件包。如果程序尝试访问已知属于已卸载包的文件,auto-apt 将使用apt-get. 此功能需要 apt 和 sudo 才能工作。

访问 apt-get 说明页面

资质

aptitude提供了两个程序中都没有的功能dselectapt-get许多附加功能。

aptitude 有自己的外壳,键盘或鼠标激活并在终端窗口中运行

aptitude build-dep <package> - 安装包的构建依赖项 - 这意味着编译(或构建)其源包所需的包。例如,许多包需要debhelperautotools将被构建,但不需要它们运行。

访问 aptitude 说明页面

dpkg

是一个安装、构建、删除和管理 Debian 软件包的工具。关联

dpkg -i <package.deb>将 Debian 软件包安装到您的计算机上。据我从帮助文件中了解到,它没有安装任何依赖项。

有关详细信息,请键入dpkg --help终端窗口。

指南

可以在此处找到文件管理指南