dpkg和aptitude / apt-get有什么区别?
通过dpkg -i packageA.deb
安装软件时,是否会自动下载并安装packageA
所需的依赖项? 这与使用apt-get
或aptitude
什么不同?
不, 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
。 在这里和那里我可能会有一些细微的差别,但他们都会寻找依赖关系并做所有这些事情。 您可以在此处阅读答案 ,了解有关aptitude
和apt-get
之间差异的更多信息。
此外, aptitude
没有超级牛的力量。
编辑:显然,确实如此。
aptitude -v[v[v[v[v]]]] moo
。
默认情况下可能未安装aptitude
。 要安装它,请执行sudo apt-get install aptitude
或单击此: aptitude 。
额外
以下信息并不能直接回答“ dpkg和aptitude / apt-get之间有什么区别? ”但它有助于全局。
来自CarlosCampderrós的评论如下 :
gdebi
是另一种工具,它是apt-get
和aptitude
之间的混合体。 当您使用它来安装.deb
软件包( gdebi packageName.deb
)时,它将识别缺少的依赖项,使用apt-get
安装它们,然后使用dpkg
安装和配置软件包。 它甚至还有一个简单而整洁的GUI,它为您提供有关.deb
包,包中包含的文件以及需要安装的依赖项的信息。 要查看此GUI,您可以执行gdebi-gtk packageName.deb
。 你可以尝试使用sudo apt-get install 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
提供了dselect
和apt-get
的function以及任何程序中都没有的许多其他function。
aptitude
有一个自己的shell,它是键盘或鼠标激活并在终端窗口中运行
aptitude build-dep
– 安装aptitude build-dep
的构建依赖关系 – 这意味着编译(或构建 )其源包所需的包。 例如,许多软件包需要构建debhelper
或autotools
,但不需要它们运行。
访问aptitude说明页面
的dpkg
是一个安装,构建,删除和管理Debian软件包的工具。 链接
dpkg -i
将Debian软件包安装到您的计算机上。 就我从帮助文件中找到的内容而言,它不会安装任何依赖项。
有关详细信息,请在终端窗口中键入dpkg --help
。
指南
可在此处找到文件管理指南
我认为最重要的还有一点不同就是要注意你应该使用apt-get
工具来安装软件包。 ( apt
或aptitude
也很好)。
这是因为dpkg
意味着在不安装依赖包的情况下安装包。 因为仅使用dpkg
安装软件包,可能会导致以后出现问题,其中依赖性解析可能最终导致系统损坏。
您应该使用命令行apt-get
或apt
(自14.04开始)工具来安装软件包。 这些工具正在为您使用dpkg
,同时在内部具有依赖项解析机制。