apt 与 apt-get:Linux 上有什么区别?
在 Linux 上应该使用 apt 还是 apt-get?
要点
- apt-get 和 apt 都是 Debian 软件包管理系统中的工具。
- apt-get 是 dpkg 的全功能接口,而 apt 是 apt-get 的稍微精简但更用户友好的版本。
- apt 和 apt-get 有一些常用命令,例如 install、remove、purge、update、upgrade 和 autoremove,但 apt 还包括其他命令,例如 search、show、list 和 edit-sources。
为什么基于 Debian 的 Linux 发行版有 apt
以及 apt-get
? apt
是否取代了 apt-get
还是它们有不同的用途?我们解释一下这两个命令之间的关系。
Debian 软件包管理系统
创建 Linux 发行版的主要工作是设计和创建包管理系统。您的用户需要有一种方法来安装和卸载软件包。这需要软件从软件存储库中检索包文件并将它们正确安装在用户的计算机上。
这不是一件小事。即使将软件工程放在一边,托管软件存储库也需要时间、精力和费用。这就是许多“新”Linux 发行版都是现有 Linux 发行版的衍生版本的原因之一。
这导致了 Linux 发行版的家族或谱系,例如基于 Debian 的发行版、基于 Red Hat 的发行版、基于 Arch 的发行版等等。
Debian 系列发行版(包括 Ubuntu 和所有 Ubuntu 衍生发行版)使用 Debian 软件包管理器。这使用带有“.deb”文件扩展名的包文件,称为 DEB 文件。 DEB 文件是包含其他存档文件的压缩文件。归档文件包含应用程序的可执行文件、手册页、库等。
从 DEB 文件安装软件意味着解压所有这些组件文件并将它们放置在计算机上的正确位置。它还需要与操作系统和桌面环境进行交互,以便应用程序显示在应用程序搜索中,并且其图标可以添加到扩展坞或系统菜单中。
apt-get
和 apt
命令都可以做到这一点。但为什么我们对同一件事有两个命令呢?
命令链
真正执行安装的包称为 dpkg 。它实际上是一系列命令,包括 dpkg-split 、 dpkg-trigger 和 dpkg-divert 。如果需要,这些工具将由高级包工具套件 (APT) 中的工具调用。 APT 是另一个工具集合,包括 apt-get、apt-cache 和 apt。
dpkg 命令被视为低级命令。除了最简单的交互之外,它还变得非常复杂,有很多选项。 apt-get
命令充当 dpkg
命令套件的前端。这大大简化了事情。 apt-get 被设计为面向用户的命令,而不是低级后台命令。即便如此,尽管它具有面向人的作用,另一个名为 apt-cache 的命令仍用于向用户显示信息。
apt
命令提供了另一种通过更易于访问且用户友好的命令行工具与 dpkg
“对话”的方式。它提供了 apt-get 功能的子集,但它是一个很大的子集,它提供了所有常用功能,并且还包括 apt-cache 的功能。
这里需要特别提及 Linux Mint。 Linux Mint 维护者开发了他们自己的 apt 版本,它是 apt-get 的 Python 包装器。这不是我们在这里讨论的apt
。我们指的是主流 Debian apt
,它于 2014 年发布,并在 2016 年包含在 Ubuntu 16.04 中时在用户领域获得了关注和吸引力。
apt 和 apt-get 之间的区别
因此,dpkg
是低级后台应用程序。 apt-get
命令是一个功能齐全但简化的 dpkg
接口,而 apt
是一个更加用户友好但稍微精简的接口apt-get
的版本。
但是 apt-get 和 apt 提供的不仅仅是一个简单的 dpkg 接口。他们做 dpkg
不做的事情。他们将从存储库中检索文件,并尝试帮助解决缺少的依赖项和冲突。
反过来,apt
命令会执行一些 apt-get
所不执行的操作。它提供了普通用户在安装过程中希望看到的更多信息,并抑制了 apt-get 显示的一些更模糊的信息。 apt 提供卓越的视觉反馈,并在终端窗口中使用颜色突出显示和进度条。
apt
和 apt-get
之间有一些通用命令。所有这些命令都可以在 apt 或 apt-get 之前,并且行为相同:
- 安装软件包名称:安装软件包。
- 删除软件包名称:删除(卸载)软件包。
- purgepackagename:删除包及其配置文件。
- 更新包名:更新存储库信息。
- 升级:更新所有软件包。
- 自动删除:删除不再需要的库和其他包。
apt full-upgrade
选项取代了 apt-get dist-upgrade
选项。
这些是 apt
的新命令:
- apt search:在存储库中搜索包名称。这与 apt-cache 搜索相同
- apt show:显示有关软件包的信息。这与 apt-cache show 相同。
- apt列表选项:显示已安装或可升级软件包的列表。
- apt edit-sources:直接编辑
apt
搜索包的存储库列表。
使用 Apt 安装应用程序
您可以使用 apt search 来查看存储库中是否存在某个包,或者检查您是否拥有正确的包名称。假设您想要安装 Scribus 但不知道软件包名称。您可以尝试寻找 scribus-desktop
。
apt search scribus-desktop
那次搜索没有发现任何东西。我们将使用更短、更通用的搜索线索再次尝试。
apt search scribus
这会返回几个点击,我们可以看到有一个名为“scribus”的包,而且它看起来确实是 Scribus 桌面出版应用程序的核心包。 apt show 命令将为我们提供更多详细信息。
apt show scribus
我们获得有关该软件包的信息转储,包括将安装的内容和软件的描述。
它还根据我们的需要建议可能需要的其他软件包。
要安装该软件包,我们需要使用sudo
。
sudo apt install scribus
这些文件是从存储库中检索的。当前正在检索的文件以棕色突出显示。
检索文件后,将安装它们。安装进度以数字百分比和进度条的形式显示。
其他命令
apt list
和 apt edit-sources
命令是 apt
中的选项,而 apt-get
中不存在。
apt list
命令可以与 --installed
或 --upgradeable
选项一起使用来查看计算机上已安装的软件包,并哪些可以升级。
要查看计算机上安装的应用程序列表,请使用:
apt list --installed
滚动浏览输出,我们可以看到新安装的 Scribus 应用程序的两个条目。
要查看是否可以升级任何已安装的应用程序,请使用 --upgradeable
选项。
apt list --upgradeable
apt
命令还为您提供了一种编辑存储库 apt
搜索包的信息的方法。仅当您知道自己在做什么时才这样做。
sudo apt edit-sources
此命令打开默认编辑器并加载保存存储库信息的文件。
我应该使用 apt 还是 apt-get?
apt-get
命令不经常更新,这是一件好事。它必须保持向后兼容性。对于 apt
来说,向后兼容性并不是一个问题。它被视为面向用户的命令。
对于日常使用,请使用apt
。
如果您编写与软件包安装有关的任何脚本,请使用 apt-get。这为您的脚本提供了最大的可移植性和兼容性的机会。