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

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

不, 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-getdpkg的前端),但是一个聪明的人会寻找依赖关系并安装它们。 它甚至可以查看当前安装的依赖项,并确定其他任何软件包未使用的依赖项,并通知您可以删除它们。

然后才出现了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 安装aptitude


额外

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


来自CarlosCampderrós的评论如下 :

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


我不想混淆任何人,但只是为了给你另一部分图片,还有另一种流行的Linux包格式叫做RPM,它的文件扩展名为.rpm 。 此包格式用于基于RPM的 Linux发行版 (例如Red Hat,CentOS和Fedora)。 他们使用命令rpm来安装软件包,而yum是它的前端,它是聪明的。 所以他们的.rpm文件是我们的.deb文件,他们的rpm工具是我们的dpkg工具,他们的yum是我们的apt-get

来自Paddy Landau的评论如下 :

alien是一个在.rpm.deb包之间进行转换的工具。 因此,如果您遇到了.rpm包的情况,并且想要在Ubuntu(或任何其他基于Debian的发行版)上安装,您可以使用命令alien rpm_packageName.rpm将其转换为.deb ,然后使用dpkg安装它。 您可以使用alien -r packageName.deb执行相反操作(将.deb转换为.rpm )。

apt-get的

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

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

apt-get build-dep 此命令搜索存储库并为其安装构建依赖项。 如果包不在存储库中,它将返回错误。

apt-get install apt-get允许多个软件包安装。 用空格分隔包裹。

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

访问apt-get说明页面

能力倾向

aptitude提供了dselectapt-get的function以及任何程序中都没有的许多其他function。

aptitude有一个自己的shell,它是键盘或鼠标激活并在终端窗口中运行

aptitude build-dep – 安装aptitude build-dep 的构建依赖关系 – 这意味着编译(或构建 )其源包所需的包。 例如,许多软件包需要构建debhelperautotools ,但不需要它们运行。

访问aptitude说明页面

的dpkg

是一个安装,构建,删除和管理Debian软件包的工具。 链接

dpkg -i 将Debian软件包安装到您的计算机上。 就我从帮助文件中找到的内容而言,它不会安装任何依赖项。

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

指南

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

我认为最重要的还有一点不同就是要注意你应该使用apt-get工具来安装软件包。 ( aptaptitude也很好)。

这是因为dpkg意味着在不安装依赖包的情况下安装包。 因为仅使用dpkg安装软件包,可能会导致以后出现问题,其中依赖性解析可能最终导致系统损坏。

您应该使用命令行apt-getapt (自14.04开始)工具来安装软件包。 这些工具正在为您使用dpkg ,同时在内部具有依赖项解析机制。