Linux主要包管理系统比较Linux主要包管理系统比较Linux主要包管理系统比较Linux主要包管理系统比较
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Linux主要包管理系统比较

发表 admin at 2025年2月28日
类别
  • 未分类
标签

包管理器是每个 Linux 操作系统不可或缺的一部分。任何希望安装、删除或升级软件的 Linux 用户都不可避免地会以某种方式与包管理器进行交互。不同 Linux 发行版之间的包管理系统的功能通常有所不同,并且每个发行版的命令语法也略有不同。由于包管理器在系统维护中发挥着重要作用,因此它们有时可能成为选择 Linux 发行版用作日常驱动程序的决定因素。

在本教程中,我们将比较主要 Linux 发行版默认的一些最常见和流行的包管理系统。涵盖主要的包管理器将帮助我们理解功能和语法之间的差异,并允许用户就哪个包管理器最适合他们的需求做出明智的决定。我们还将介绍可在各种发行版上使用的通用包管理器,例如 Snap 和 Flatpak。

注意
软件存储库也与包管理器齐头并进。即使两个发行版使用相同的包管理器,一个发行版的默认存储库中也可能存在某些软件,而另一个发行版的默认存储库中不存在某些软件。当用户需要的程序在默认存储库中可用时,安装和维护就会变得更加容易。

在本教程中您将学习:

  • 使用一种包管理器相对于另一种包管理器的优缺点
  • 如何使用各种 Linux 包管理器搜索、安装、删除和执行其他功能

流行的包管理器的优点和缺点

在深入了解每个包管理器的详细信息之前,让我们首先回顾一下每个包管理器的一些优点和缺点。后续部分将更详细地介绍每个包管理器的优点,但下表以更容易理解的方式总结了它们:

Package manager Pros Cons
APT Versatile with a lot of tools for different jobs (apt for general; apt-get for scripts; aptitude for interactive) A lot of tools with confusingly overlapping functionality; requires separate package cache updates
DNF Straightforward and very simple to use Less granular control and versatility than some other package managers
Pacman Markedly faster than others; lightweight Less intuitive command syntax; separate manager required for AUR
Zypper Fast, robust, and efficient Limited to SUSE distros; complex syntax for advanced uses
Portage Highly customizable; compilation from source Steep learning curve; slower at installing packages due to compilation time
Universal managers (Snapd, Flatpak) Distro independent; sandboxed installations Less customization; bloated packages due to portability requirements

APT 家族

APT 包管理器默认用于 Debian Linux 和基于 Debian 的发行版,例如 Ubuntu Linux 和 Linux Mint。我们选择“家族”这一分组是因为基于 Debian 的发行版中的包管理软件有多种工具组成。以下是一个快速概述:

  • dpkg – 这是 APT 使用的后端包管理器(dpkg 在技术上不是 APT 的一部分),它处理软件的实际安装和删除。通常,用户永远不需要直接与 dpkg 交互
  • APT – 这是 dpkg 后端和前端命令行工具(例如 apt 和 apt-get)之间的中间件
  • apt – 用户通常用于安装和删除软件包的前端工具
  • apt-get – 另一种前端,也是 apt 的较旧替代品,但旨在供脚本和系统服务使用
  • aptitude – 另一个 APT 前端工具,更加用户友好和互动

使用相似的、重叠的包管理器名称以及功能上的重叠是许多用户在尝试完全掌握 Debian 或 Ubuntu 的包管理系统时最终感到困惑的原因。

作为最终用户,您真正需要熟悉的唯一工具是 apt – 请注意小写字母,这意味着我们指的是命令行工具本身,而不是 APT 库/中间件。或者,您也可以使用 aptitude,它只是 apt 的更现代的替代品。但是,大多数文档和用户通常会坚持使用 apt 命令。

您知道吗?
许多旧文档都会引用apt-get命令并指导读者使用它。它应该可以正常工作,但是,安装或管理软件包的现代推荐方法是使用 apt。更多信息:apt 与 apt-get

更新包缓存

我们首先看看如何使用 APT 系列更新包缓存。每次在系统上更新或安装软件包之前,您都需要执行此操作。这是大多数其他包管理器不需要的过程,但只需要一点时间,也没什么大不了的。

更新包缓存只是告诉您的系统从哪里下载软件以及安装什么版本,因为主机和链接总是在变化。因此,首先,我们将运行以下命令:


sudo apt update

在aptitude中,我们将运行:


sudo aptitude update

安装软件包

现在,我们准备使用apt install命令和软件包名称来安装软件。例如,要安装 vim:


sudo apt install vim

或者,使用 aptitude 安装相同的软件包:


sudo aptitude install vim

注意
这些相同的命令也可用于更新单个包。换句话说,运行 sudo apt install vim 将更新 vim 软件包(如果已安装)。

更新包

接下来,让我们看看如何使用 APT 系列更新当前安装的软件包。请注意,此方法用于更新系统上当前的所有软件包。

与往常一样,首先更新包缓存:


sudo apt update
OR
sudo aptitude update

然后,运行以下命令之一来更新软件包,而不删除任何已安装的软件包:


sudo apt upgrade
OR
sudo aptitude safe-upgrade

或者,如果您想允许 apt 删除不再需要的已安装软件包,和/或如果您想将内核更新到最新版本,我们将升级命令更改为:


sudo apt full-upgrade
OR
sudo aptitude full-upgrade

正在寻找一个包

APT 的一个重要功能是能够搜索要安装的软件包。它还允许我们查看当前安装的软件。

apt 命令的基本语法是:


apt search vim

这将列出与您的搜索词匹配的所有包。

aptitude 命令的语法是相同的:


aptitude search vim

由于 aptitude 是更具交互性和用户友好性的替代方案,因此搜索输出以每个包旁边的单个字符的形式为我们提供了一些有用的信息,这些信息指示:

  • p – 未安装
  • i – 当前安装
  • v – 虚拟包

我们还获得与我们的搜索词匹配的每个软件包的名称以及软件的描述。两种 APT 工具都会返回此信息。

删除包

要使用 apt 或 aptitude 删除软件包,有两个不同的命令:remove 和 purge。 remove 选项将卸载软件,但留下配置文件。如果您认为稍后可以重新安装该程序并且不想丢失您拥有的设置,这可能会很有用。

另一方面,purge 将卸载程序并尝试删除所有额外文件,例如软件附带的配置文件。让我们看一下这两种语法:

要删除包而不触及配置文件:


sudo apt remove vim
OR
sudo aptitude remove vim

要删除该包及其配置文件:


sudo apt purge vim
OR
sudo aptitude purge vim

最后,有时需要安装依赖包,但随后就不再需要了;这些称为孤立依赖项。要删除这些,我们可以使用以下命令:


sudo apt autoremove
OR
sudo aptitude remove ~o

地下城与勇士

在基于 Red Hat 的系统(如 Fedora、CentOS、Oracle Linux、Rocky Linux、AlmaLinux 等)上,dnf 包管理器取代了 yum。 yum 命令在许多此类系统上仍然可用,但它只是到较新的 dnf 命令的符号链接,该命令引入了许多现代功能。

关于 dnf,您可能会注意到它的使用非常简单,并且没有很多替代命令或使用该工具的方法。这对于想要简化体验的用户来说很有吸引力,而其他人可能会觉得它被淡化了,并且没有提供大量的定制或独特的方式来利用包管理器。

更新包

与 apt 不同的是,每当用户与包管理器交互时,dnf 都会自动刷新其包缓存,因此无需手动更新。要更新系统上当前安装的所有软件包,用户可以执行:


sudo dnf update

安装软件包

使用 dnf 安装软件包使用简单的语法:


sudo dnf install neovim

删除包

要使用 fng 删除包:


sudo dnf remove neovim

正在寻找一个包

如果您不知道要安装的软件包的名称,我们可以使用 search 参数,后跟软件包的关键字或搜索词:


dnf search neovim

吃豆人(和帕马克)

pacman 包管理器用于 Arch Linux 及其衍生发行版(例如 Manjaro Linux)。它明显比许多其他包管理器要快,并且虽然使用简单,但语法不太直观。它是 Linux 高级用户和那些渴望灵活性和定制的用户的普遍喜爱。

对于那些觉得 pacman 难以使用的人来说,Pamac 是 pacman 的图形前端,默认安装在 Manjaro 上。如果您想要使用更简单的东西,同时仍然在后端利用 pacman 的强大功能,那么它是 pacman 的一个很好的替代方案。 Pamac 也可以安装在 Arch Linux 上。

更新所有包

您可以使用 -Syu 选项更新所有已安装的软件包,从而更新整个系统(因为 Arch Linux 是滚动版本):


sudo pacman -Syu

以下是选项的含义:

  • -S:将系统的软件包与官方仓库中的软件包同步
  • -y:从服务器下载新的包数据库
  • -u:升级所有已安装的软件包

安装一个包

要使用 pacman 安装软件包,请提供 -S 选项和您要安装的软件包的名称:


sudo pacman -S vim

删除一个包

提供 -R 选项以删除 pacman 中的包:


sudo pacman -R vim

要删除所有未使用的依赖项以及要卸载的软件包,请包含 -Rns 选项:


sudo pacman -Rns vim

搜索包

要搜索软件包,请使用 -Ss 选项,后跟您的搜索词:


sudo pacman -Ss vim

帕马克

Pacman 是具有图形界面的用户友好替代方案。它可用于根据需要搜索、安装、更新和删除包。

如果您发现 pacman 由于语法不直观而有点难以使用,pamac 命令提供了更简单的替代方案。例如,要使用 pamac 安装软件包:


sudo pamac install vim

AUR 助手

AUR(Arch 用户存储库)是由 Arch Linux 社区策划的在线软件目录。如果某个软件包本身无法通过 pacman 安装,那么您寻找的软件包通常很可能已被某人上传到 AUR。

AUR 是 Arch Linux 中最吸引人的部分之一,因为它极大地增加了可安装的软件数量。由于 pacman 无法与 AUR 交互,因此您将需要所谓的“AUR 助手”,它本质上是一个使用 AUR 作为其软件存储库的单独的包管理器。

正如我们上面所介绍的,Pamac 就是这样一个 AUR 助手。另一个流行的选择是 yay,我们将在下面介绍其语法。您会注意到命令选项与 pacman 的命令选项相同。

安装一个包

要使用 yay 从 AUR 安装软件包,请使用 -S 选项。例如,让我们安装 Spotify:


yay -S spotify

要更新系统上的所有 AUR 软件包:


yay -Syu

搜索包

要在 AUR 中搜索软件包,您可以随时访问 AUR 官方网站并找到您要查找的内容。或者,要在 yay 中搜索 AUR 包,请使用 -Ss 选项:


yay -Ss [search term]

删除一个包

要使用 yay 删除 AUR 包,请提供 -R 选项:


yay -R spotify

要删除 AUR 包和任何未使用的依赖项,请添加 -Rns 选项:


yay -Rns spotify

检查已安装的软件包

如果您忘记某个软件包是来自 AUR 还是来自 pacman,您可以使用 yay 检查您的系统上当前安装了哪些 AUR 软件包:


yay -Qm

扎普

zypper 软件包管理器是 openSUSE 和 SUSE Linux Enterprise 的默认软件包管理器。它易于使用,并提供命令行界面和图形前端,因此您可以使用更方便的方式。

更新缓存和包

要更新包缓存和所有已安装的包,我们运行以下命令:


sudo zypper refresh
sudo zypper update

安装一个包

要使用 zypper 安装软件包,请运行:


sudo zypper install vim

删除一个包

要使用 zypper 删除包,请提供 remove 参数:


sudo zypper remove vim

搜索包

使用 zypper 搜索包:


zypper search [search term]

波蒂奇

Gentoo Linux 发行版使用 Portage 作为其包管理器。 Portage 是这个列表中最独特的包管理器,因为它从源代码编译包。对于那些坚定地使用 Linux 并希望卷起袖子并从系统中获得最大程度定制的人来说,他们可以学习使用 Gentoo 和 Portage 来对其 Linux 系统的各个方面进行精细控制。掌握 Gentoo 是一个漫长的旅程,但您首先需要掌握的事情之一就是使用 Portage。

Portage 使用户能够使用 USE 标志微调新包的编译过程。这样,用户就可以准确选择将哪些功能或组件编译到正在安装的程序中。

同步Portage树

您会注意到这里的一些术语有所不同。但是同步Portage树相当于更新其他主流包管理器中的包缓存。为此,我们运行:


sudo emerge --sync

安装一个包

要使用 Portage 安装软件包,例如 vim:


sudo emerge vim

这里唯一不同的是,该过程将比其他包管理器花费更长的时间,因为代码将从源代码编译,而不是安装已经编译的二进制文件。

删除包

要使用 Portage 删除软件包,我们执行:


sudo emerge --unmerge vim

搜索包

我们可以使用 Portage 通过使用 --search 选项来搜索包:


emerge --search [search term]

通用包管理器 – Snap、Flatpak 等。

Snapd、Flatpak 和 AppImage 等包管理系统经常被提及和比较。它们三个都是独立于发行版的包管理器,这意味着它们可以在任何 Linux 系统上使用,无论您运行的是哪个发行版。

通用包管理器的优点是始终使用相同的语法,无论您使用什么发行版。他们还确保包在所有系统上的行为相似。这些都是很好的功能,但是使包在所有系统之间可移植意味着某些自定义功能会在此过程中丢失。

捕捉命令

安装包:


sudo snap install spotify

删除包:


sudo snap remove spotify

更新所有 Snap 包:


sudo snap refresh

Flatpak 命令

Flatpak 可以利用不同的软件存储库,这些软件存储库在 Flatpak 行话中称为“远程”。 Flathub 是最受欢迎的存储库,因此我们可以通过运行以下命令将其添加到我们的系统中:


sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

然后,要安装像 GIMP 这样的程序,我们将运行:


sudo flatpak install flathub org.gimp.GIMP

要搜索遥控器中的软件,我们使用以下语法:


flatpak search gimp

您可以使用以下方法更新所有已安装的应用程序:


sudo flatpak update

最后,要使用 Flatpak 删除包,请执行:


sudo flatpak uninstall org.gimp.GIMP

结束语

在本教程中,我们了解了各种 Linux 系统包管理器的优缺点。我们还看到了用于与包管理器交互的语法,以便安装包、删除包以及执行其他功能。包管理系统是每个 Linux 发行版的核心部分,由于它们都有独特的功能和优势,因此在选择最适合用户的 Linux 发行版时可以发挥重要作用。

©2015-2025 Norria support@norria.com