额外的

额外的

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

答案1

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

apt-get包管理系统处理 Deb 软件包的安装基于 Debian 的 Linux 发行版。软件包管理系统是一套工具,可帮助您轻松安装、删除和更改软件包。因此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 有什么区别?“但它对大局有所贡献。


卡洛斯·坎普德罗斯在下面评论

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


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

帕迪·兰道在下面评论

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

答案2

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提供了功能dselect以及apt-get两个程序中都没有的许多附加功能。

aptitude有自己的 shell,可以通过键盘或鼠标激活并在终端窗口中运行

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

访问能力指导页面

软件包

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

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

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

指南

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

答案3

尽管这个问题有很多很好的答案,但我想说一些更详细的话。

  • dpkg(或rpm在 Fedora 家族中)是低级安装和删除包文件的工具,它不会安装依赖项或从存储库中搜索它。
  • aptapt-getaptitude(在 Fedora 家族中为yum和)是dnf高水平- 或者正如它提到的第一个答案A 前端dpkg——执行元数据搜索和依赖关系解析的工具。

我喜欢解释它们的区别包管理Linux 中的任务:

  1. 对于从存储库安装、卸载或更新包,我使用高级的(apt-get installapt-get updateapt-get remove),但对于从包文件安装和升级,我使用低级别的(dpkg -i package_file, )。
  2. 对于存储库中的搜索,我使用高级工具(apt-cache search search_str
  3. 为了检查已安装的软件包和文件,我使用低级别的软件包和文件(dpkg -l有关-s更多-S信息,请查看手册man dpkg | less
  4. 对于包元数据,我使用高级元数据,例如apt-cache show dpkg

答案4

我认为最重要的事情也是需要注意的区别是您应该使用apt-get工具来安装软件包。(apt或者aptitude也可以)。

这是因为dpkg旨在安装软件包而不安装依赖软件包。因此,仅使用 安装软件包dpkg可能会导致以后出现依赖性解析问题,最终导致系统崩溃。

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

相关内容