apt vs. apt-get:Linux 上有什么区别?

已发表: 2022-06-16
红色背景下笔记本电脑上的 Linux 终端。
fatmawati achmad zaenuri/Shutterstock

为什么基于 Debian 的 Linux 发行版有aptapt-getapt替换了apt-get还是有不同的目的? 我们解释这两个命令之间的关系。

Debian 软件包管理系统

创建 Linux 发行版的主要工作是设计和创建包管理系统。 您的用户需要有一种方法来安装和卸载软件包。 这需要软件从您的软件存储库中检索软件包文件并将它们正确安装在用户的计算机上。

软件安装和包管理器如何在 Linux 上工作
相关软件安装和包管理器如何在 Linux 上工作

这不是一件小事。 即使将软件工程放在一边,托管软件存储库也需要时间、精力和费用。 这就是为什么这么多“新”Linux 发行版是现有 Linux 发行版的衍生产品的原因之一。

这导致了 Linux 发行版的家族或谱系,例如基于 Debian 的发行版、基于 Red Hat 的发行版、基于 Arch 的发行版等等。

Debian 系列发行版——包括 Ubuntu 和所有 Ubuntu 派生的发行版——使用 Debian 包管理器。 这使用带有“.deb”文件扩展名的包文件,称为 DEB 文件。 DEB 文件是包含其他存档文件的压缩文件。 归档文件包含应用程序的可执行文件、手册页、库等。

如何在 Linux 中安装 DEB 文件
相关如何在 Linux 中安装 DEB 文件

从 DEB 文件安装软件意味着解压缩所有这些组件文件并将它们放置在计算机上的正确位置。 它还需要与操作系统和桌面环境进行交互,以便应用程序显示在应用程序搜索中,并且可以将其图标添加到停靠栏或系统菜单中。

广告

apt-getapt命令都这样做。 但是为什么我们对同一件事有两个命令呢?

指挥链

真正执行安装的包称为dpkg 。 它实际上是一系列命令,包括dpkg-splitdpkg-triggerdpkg-divert 。 如果需要,这些将由高级软件包工具套件或 APT 中的工具调用。 APT 是另一个工具集合,包括apt-getapt-cacheapt

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的全功能但简化的界面,而aptapt-get的更用户友好但略微精简的版本。

如何在 Ubuntu 上编译软件时解决依赖关系
相关如何在 Ubuntu 上编译软件时解决依赖关系

但是apt-getapt提供的不仅仅是dpkg的简单接口。 他们做dpkg不做的事情。 他们将从存储库中检索文件,并尝试帮助解决缺少的依赖项和冲突。

反过来, apt命令做了一些apt-get没有做的事情。 它提供了更多普通用户在安装过程中希望看到的类型的信息,并抑制了apt-get显示的一些更晦涩的信息。 apt提供出色的视觉反馈,并在终端窗口中使用颜色高亮和进度条。

aptapt-get之间有一些常用命令。 所有这些命令都可以以aptapt-get ,并且行为相同:

  • install packagename安装一个包。
  • remove packagename :删除(卸载)一个包。
  • purge packagename :删除一个包及其配置文件。
  • update packagename :更新存储库信息。
  • upgrade :更新所有软件包。
  • autoremove :删除不再需要的库和其他包。

apt full-upgrade选项替换了apt-get dist-upgrade选项。

这些是apt的新命令:

  • apt search :在存储库中搜索包名称。 这与apt-cache search相同
  • apt show :显示有关包的信息。 这与apt-cache show相同。
  • apt list option :显示已安装或可升级软件包的列表。
  • apt edit-sources :直接编辑apt搜索包的存储库列表。

安装应用程序

您可以使用apt search来查看存储库中是否存在软件包,或者检查您是否获得了正确的软件包名称。 假设您想安装 Scribus,但您不知道软件包名称。 您可以尝试寻找scribus-desktop

 apt search scribus-桌面

在存储库中搜索名为 scribus-desktop 的包

那次搜索什么也没找到。 我们将使用更短、更通用的搜索线索再次尝试。

 apt 搜索 scribus 

在存储库中搜索名为 scribus 的包

广告

这会返回几个点击,我们可以看到有一个叫做“scribus”,它看起来确实是 Scribus 桌面发布应用程序的核心包。 apt show命令将为我们提供更多详细信息。

 apt show scribus 

使用 apt show 了解更多关于 scribus 包的信息

我们得到有关软件包的信息转储,包括将安装的内容和软件描述。

有关 scribus 包的信息

它还建议可能需要的其他软件包,具体取决于我们的需要。

要安装软件包,我们需要使用sudo

 sudo apt install scribus 

安装 scribus 包

这些文件是从存储库中检索的。 当前正在检索的文件以棕色突出显示。

文件检索作为软件包安装的一部分

检索文件后,将安装它们。 安装进度显示为以数字显示的百分比和进度条。

安装包带有百分比和进度条

其他命令

apt listapt edit-sources命令是apt中不存在于apt-get中的选项。

广告

apt list命令可以与--installed--upgradeable选项一起使用,以查看计算机上已安装的软件包以及可以升级的软件包。

要查看计算机上安装的应用程序列表,请使用:

 apt list --已安装

使用 apt 列出已安装的应用程序

滚动输出,我们可以看到新安装的 Scribus 应用程序的两个条目。

已安装应用程序的列表

要查看是否可以升级任何已安装的应用程序,请使用--upgradeable选项。

 apt list --upgradeable 

可以升级的应用程序列表

apt命令还为您提供了一种方法来编辑存储的有关apt搜索包的存储库的信息。 仅当您知道自己在做什么时才这样做。

 sudo apt 编辑源

使用 apt 编辑存储库信息

广告

此命令打开您的默认编辑器并加载包含存储库信息的文件。

在 nano 编辑器中打开的存储库数据文件

我应该使用 apt 还是 apt-get?

apt-get命令不经常更新,这是一件好事。 它必须保持向后兼容性。 向后兼容性对apt来说不是一个问题。 它被视为面向用户的命令。

对于日常使用,请使用apt

如果您编写与软件包安装有关的任何脚本,请使用apt-get 。 这为您的脚本提供了最大的可移植性和兼容性机会。

相关: Shell 脚本初学者指南:基础