apt vs. apt-get:Linux 上有什么区别?
已发表: 2022-06-16 为什么基于 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
,并且行为相同:
- 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-桌面
那次搜索什么也没找到。 我们将使用更短、更通用的搜索线索再次尝试。
apt 搜索 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 --已安装
滚动输出,我们可以看到新安装的 Scribus 应用程序的两个条目。
要查看是否可以升级任何已安装的应用程序,请使用--upgradeable
选项。
apt list --upgradeable
apt
命令还为您提供了一种方法来编辑存储的有关apt
搜索包的存储库的信息。 仅当您知道自己在做什么时才这样做。
sudo apt 编辑源
此命令打开您的默认编辑器并加载包含存储库信息的文件。
我应该使用 apt 还是 apt-get?
apt-get
命令不经常更新,这是一件好事。 它必须保持向后兼容性。 向后兼容性对apt
来说不是一个问题。 它被视为面向用户的命令。
对于日常使用,请使用apt
。
如果您编写与软件包安装有关的任何脚本,请使用apt-get
。 这为您的脚本提供了最大的可移植性和兼容性机会。
相关: Shell 脚本初学者指南:基础