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


Answers:


168

不,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。您可以gdebi尝试通过安装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。您可以使用进行相反的操作(转换.deb.rpmalien -r packageName.deb


5
这非常有用,而且正是我想要的。Tx!
Aniket Thakur 2013年

4
另外,您可以使用gdebiapt-get install gdebi-core)将apt-get/ aptitude与混合使用dpkg。用调用它,gdebi some_package.deb它将分析其依赖项,调用apt-get以安装缺少的依赖项,并在所有依赖项都得到满足后,再调用dpkg以最终安装您的软件包。
卡洛斯·坎德罗斯

2
@Alaa在Extra下,您还可以提及alien.rpm和之间转换程序包.deb。这对于可用于RPM但不可用于DEB的软件包很有用(反之亦然)。例如,alien packagename.rpm使其可用于Ubuntu。
帕迪·兰道

1
@AlaaAli aptitude不是的前端apt-get这两个程序都是该libapt-pkg库的前端。
伊利亚·卡根

1
@edwardtorvalds AskUbuntu是一个问答网站。从数千个老问题中在网站上搜索您的答案,如果找不到,请提出自己的问题,比我更多有经验的人也希望能够回答。
Alaa Ali 2014年

5

适当的

通过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要构建,但不需要运行它们。

访问智能指导页面

dpkg

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

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

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

导游

可以在这里找到文件管理指南


0

我认为最重要的一点也是要注意的一点是,您应该使用apt-get工具来安装软件包。(aptaptitude也可以)。

这是因为dpkg是要安装软件包而不安装相关软件包。因此,仅使用安装软件包dpkg可能会导致以后的问题,其中依赖项解析可能会导致系统损坏。

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

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.