当前位置: 首页>>技术问答>>正文


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

, , ,

问题描述

当通过dpkg -i packageA.deb安装软件时,packageA所需的相关性会自动下载并安装吗?这与使用apt-getaptitude有什么不同?

最佳解决思路

不,dpkg只安装一个软件包,因此dpkg -i packageName.deb只会安装Deb软件包,并会通知您需要安装的任何依赖项,但它不会安装它们,并且它不会配置packageName.deb,因为……依赖关系不存在。

apt-get是一个Package Management System,用于处理Debian-based Linux distributions上Deb程序包的安装。包管理系统是一组工具,可帮助您轻松安装,删除和更改包。所以apt-get就像一个聪明的dpkg

我喜欢用这种方式来思考时间表(以下仅仅是我从经验中发表的意思,它只是给你一个关于这件事的想法):

  • 他们想出了一种方式将”store”中的应用程序的文件安装在”package”中,以便安装。所以,Deb软件包(.deb扩展文件)诞生了。 .deb文件包含应用程序运行所需的文件,以及(我喜欢称之为)”meta-data”,其中包含其他信息,例如应用程序所需的依赖项的名称。如果要查看.deb文件的内容,可以使用命令dpkg -c packageName.deb,并且如果要查看此”meta-data”信息,请使用命令dpkg -I pacakgeName.deb(如果只想查看依存关系,请执行dpkg -I packageName.deb | grep Depends)。

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

  • 然后,他们想出了apt-get,它可以自动解决上述问题。在引擎盖下,apt-get基本上是dpkg(我喜欢把它看作apt-getdpkg的front-end),但是聪明的人会寻找依赖并安装它们。它甚至会查看当前安装的依赖关系并确定其他包未使用的依赖关系,并会通知您可以将其删除。

aptitude随后出现。它使用apt-get使用的库,实际上有一个交互式UI(用户界面)。如果你想看到这个UI,只需在终端中输入aptitude即可。这是aptitude。它利用库提供比apt-get更多的选项和特权。例如,aptitude将自动删除符合条件的软件包,而apt-get需要单独的命令才能执行此操作。但是,最终,做sudo aptitude install packageName.deb应至少与sudo apt-get install packageName.deb相同。在这里和那里我可能会有细微的差异,但我不知道它们,但它们都会寻找依赖关系并完成所有这些工作。您可以阅读the answer here以获取有关aptitudeapt-get之间差异的更多信息。

另外,aptitude没有超级牛的权力。

EDIT: Apparently, it does. aptitude -v[v[v[v[v]]]] moo.

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

apt,dpkg,aptitude,ubuntu


Extra

The following information doesn’t really directly answer “What is the difference between dpkg and aptitude/apt-get?” but it contributes to the big picture.


Carlos Campderróscomment below

gdebi是另一种apt-getaptitude混合的工具。当您使用它来安装.deb软件包(gdebi packageName.deb)时,它将识别缺失的依赖项,使用apt-get进行安装,然后使用dpkg最终安装和配置软件包。它甚至包含关于.deb包的simple and neat GUI that gives you information,包中包含的文件以及需要安装的依赖关系。要看这个GUI,你可以做gdebi-gtk packageName.deb。您可以通过与sudo apt-get install gdebi一起安装gdebi或点击此:gdebi来尝试gdebi

apt,dpkg,aptitude,ubuntu


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

Paddy Landaucomment below

alien是一种在.rpm.deb软件包之间转换的工具。因此,如果您遇到有.rpm软件包的情况,并且希望将其安装到Ubuntu(或任何其他Debian-based发行版)上,则可以使用命令alien rpm_packageName.rpm将其转换为.deb,然后使用dpkg进行安装。您可以使用alien -r packageName.deb做相反的操作(将.deb转换为.rpm)。

次佳解决思路

apt-get

通过apt-get进行的包管理运行hand-in-hand和/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才能工作。

Visit the apt-get instruction page

aptitude

aptitude提供了dselectapt-get的功能以及其他程序中没有的其他功能。

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

aptitude build-dep <package> – 安装程序包build-dependencies – 这意味着编译(或构建)其源代码包所需的程序包。例如,许多软件包需要建立debhelperautotools,但不需要它们运行。

Visit the aptitude instruction page

dpkg

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

dpkg -i <package.deb>将Debian软件包安装到您的计算机上。它不会安装任何依赖关系,只要我可以从帮助文件中找到。

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

Guides

可以找到一个文件管理指南here

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/487.html,未经允许,请勿转载。