Ubuntu 中的 APT 和 dpkg 有什么区别?
Ubuntu 和其他基于 Debian 的发行版使用 APT 和 dpkg 管理软件包。但哪一个更适合您的需求呢?
如果您使用 Ubuntu 或任何其他基于 Debian 的 Linux 发行版,您无疑会阅读告诉您使用 APT 命令的安装说明,而其他人则告诉您使用 dpkg。
那么,如果您使用这些包管理器在 Linux 系统上安装包,这有什么关系吗?有什么不同?今天我们将解决这些问题,以便您了解如何在 Ubuntu 上最好地安装软件包。
APT 与 dpkg:两个重要的软件包安装程序
APT 和 dpkg 都是命令行包管理界面,您可以在 Ubuntu 和其他基于 Debian 的系统上的终端中使用。除其他外,他们还可以安装 DEB 文件并列出已安装的软件包。
但您可能想知道它们是否如此相似,为什么同时需要 APT 和 dpkg?
这两个接口实际上是协同工作的,APT 通过使用 dpkg 充当一个完整的包管理工具。
使困惑?让我们来分解一下关键的区别。
APT使用dpkg安装软件包
当 APT(或其表亲 Apt-get)安装软件包时,它实际上是在后端使用 dpkg 来完成此操作。这样,dpkg 更多地充当 APT 更加用户友好的界面的“幕后”工具。
APT可以下载包
使用 APT,您可以通过一个命令从远程存储库检索文件并安装它。这使您无需在安装前手动查找和下载软件包。
使用 dpkg,您只能安装您自己已经下载的本地文件。它无法搜索远程存储库或从中提取软件包。
Dpkg 不会安装依赖项
当您使用 dpkg 安装软件包时,就会发生这样的事情:系统将简单地安装该软件包。然而,某些软件包需要称为依赖项的附加软件才能运行。如果是这种情况,dpkg 可能会向您发出错误消息警告。
但是,APT 会自动检查并获取相关依赖项,以确保您尝试安装的任何功能正确无误。这就是为什么我们建议在使用 dpkg 安装软件包后,仍然使用 APT 的特殊命令来恢复依赖关系。
sudo apt install -f
Dpkg 仅索引本地软件包
如果您想查找系统上安装的软件包,dpkg 中的 --list 功能可能比 APT 更适合您。这是因为,与无法查找和下载远程软件包一样,dpkg 也无法列出任何非设备本地的软件包。
dpkg --list
APT 的 list 命令将列出它知道的每个包,无论是本地包还是其他包。
apt list
要仅查看已安装的软件包,您必须传递 --installed 或 -i 选项。
apt list --installed
Dpkg 与 Apt:哪个更适合您?
如果您想使用 dpkg 安装本地软件包,您可以这样做而不会遇到任何问题。但是,如果您经常在远程软件存储库上搜索软件包,那么使用 APT 或 Apt-get 会更好。
APT 将查找并下载您想要的软件包,并确保满足所有必要的依赖关系。您仍然可以使用 dpkg,但 APT 将执行相同的功能,同时确保您的软件按照您需要的方式工作。此外,APT 非常适合正确卸载软件包并将其从系统中删除。