那么为什么有了 apt 人们仍然使用 dpkg 呢?

那么为什么有了 apt 人们仍然使用 dpkg 呢?

抱歉,我是 Ubuntu 的新手。

虽然 dpkg 只能安装、删除或查询单个软件包,但 apt 提供了额外的功能,例如自动处理依赖项、从远程位置检索和安装软件包以及将所有已安装的软件包升级到最新版本。- https://www.geekbits.io/what-is-the-difference-between-apt-and-dpkg/#:~:text=While%20dpkg%20can%20only%20install,packages%20to%20their%20latest%20versions

那么为什么有了 apt 人们仍然使用 dpkg 呢?

答案1

dpkgapt是用于处理包的低级打包工具。

大多数“普通”用户只应使用apt,因为它会自动处理依赖关系。

只有在非常特殊的情况下,您想要安装特定的包,并且不想自动解决依赖关系时才会使用dpkg

我认为这主要与故障排除和研究目的相关。

简而言之:如果您需要dpkg而不是apt,您就会知道原因。如果您不确定,请使用apt

是的,我知道有些在线指南使用dpkg- 在我看来,这是一个只会造成混乱的错误。原因可能是(正如 muru 所述),它最近才具备安装本地文件的apt功能。.deb

答案2

如果你只是从系统存储库安装/更新/删除软件包,那么直接使用 dpkg 的原因,因为 APT 可以完成 dpkg 所做的一切(因为它实际上在内部使用 dpkg 来执行这些操作),管理软件包时通常需要做而 dpkg 无法做的所有事情。

,APT 并不是无所不能的。

从历史上看,APT 没有做的一件大事是直接从包文件安装 DEB 包,而不是从仓库中获取它们(换句话说,直到几年前你还不能apt-get install /some/package/file.deb,你使用 dpkg,或者可能是 dselect)。这个限制就是为什么很多旧的“如何在 Debian 上安装 foo”类型的指南经常使用 dpkg 而不是 APT,也是为什么存在像 gdebi 这样的东西。不过现在这已经不重要了,因为您只需将包文件传递给 APT,它就会在 99.9% 的情况下做正确的事情。

经常出现的另一件大事是确定给定文件属于哪个软件包或列出软件包安装的文件。APT 没有这方面的选项(apt-file可以技术上这样做,但这不是 APT 的一部分,有时解析输出很麻烦,并且它只查看来自存储库的信息,而不是包本身,因此它并不总是有效),但 dpkg(或更正确地说dpkg-query)提供了进行此类查找的选项。

APT 没有涵盖许多其他内容,但几乎所有这些内容都只引起开发人员的兴趣。

相关内容