您是否想知道 Linux 如何管理软件包(下载、安装和删除软件包)?好吧,这一切都属于 Linux 软件包管理。
由于 Linux 是开源的,因此您可以找到许多包管理器。今天我们有机会了解更多有关 Linux 包管理器的知识。
在本主题中,您将了解有关 Linux 包管理的核心概念,包括 Linux 包管理器的定义、其核心概念及其工作原理。
让我们开始吧。
什么是 Linux 包管理器?
Linux 包管理器是一组允许用户有效管理包的软件或工具。用户可以使用 Linux 操作系统支持的包管理器来安装、升级、删除和配置包。
从功能上讲,包管理器处理包、包含计算机程序的存档文件以及包元数据等功能所需的其他文件。包元数据提供有关包的信息,例如描述、版本和依赖项。
你不觉得很难理解吗?让我们通过了解下面相关的包管理器核心概念来澄清这一点。
了解核心包管理概念
本节介绍包管理的核心概念,例如包、依赖项和存储库。
#1.包裹
软件包是Linux操作系统的核心。从技术上讲,这是一个存档文件,其中包含可执行二进制文件、关联的配置文件以及有关正确运行所需的依赖项的信息。
为简单起见,您可以将软件包视为可以在 Linux 操作系统上运行的软件或应用程序。软件包可以是面向命令行的或 GUI 应用程序。包还可以充当运行其他软件程序的依赖项。
关于包的另一个重要的事情是它们是预编译的。这意味着包管理器不需要编译源代码。如果你回头看,你会发现你需要手动编译你的软件。
- 用户必须首先访问 README 文件,找到所有依赖项,然后手动下载并安装它们。
- 它通常包含一个 makefile 或脚本以使整个过程更容易。这是一项乏味且容易出错的任务。
为了简化管理软件和服务的过程,Linux 引入了包管理系统。
#2.依赖关系
Linux 操作系统很复杂。由多个相互依赖的软件组成。该软件需要其他软件或软件包才能运行。
我们从发展的角度来理解。如果您选择一个开源项目,您将看到它利用开源库。毕竟,一切都从头开始开发并不是明智之举。无需重新发明轮子。
因此,当您安装软件包时,它将包含列出的依赖项。包管理器搜索依赖项列表并安装所有或缺少的包。
#3。存储库
存储库或存储库是列出所有包的虚拟在线位置。这些存储库可通过 Internet 访问,并帮助 Linux 用户在安装软件时访问所需的软件包。
使用包管理系统的优点
使用包管理系统有很多好处。这些包括:

- 轻松安装新软件包。
- 包管理系统允许您正确删除旧的应用程序。
- 执行软件包的清晰重新安装。重新安装软件包是开发人员的常见做法,因为它会自动修复损坏的配置和文件,而无需手动调试。有了良好的包管理系统,管理员就可以放心地重新安装软件,因为管理系统会处理一切。
- 无需手动干预即可轻松保持已安装的软件包最新。您可以将更新设置为每天自动运行,以保护您的系统免受常见漏洞和暴露 (CVE) 以及新漏洞的影响。
接下来,我们将解释包管理器的工作原理。
包管理器如何工作?
包管理器是 Linux 操作系统的核心。不过,它也可以在 Linux 上使用。
包管理器无处不在,包括您自己的可视化编辑器(如 Atom 和 Visual Studio Code)中。其他流行的包管理器包括 PIP(Python 包管理器)。 npm — JavaScript 包管理器。等等。
另请阅读:什么是 Chocolatey 以及如何安装它?
为了使包管理器正常工作,它需要访问工作存储库。该软件存储库列出了软件包。每个包都包含元数据信息,使包管理器更容易处理它。
因此,下次您使用包管理器搜索包时,包管理器将使用存储库的元数据来了解该包,例如其名称、描述和版本。
在第一次交互中,系统的包管理器创建本地元数据缓存。稍后在执行“更新”等操作时将使用此缓存。 — 通过运行 apt update 等命令。

同样,安装包时,它会在本地元数据缓存中查找信息并根据该信息运行命令。
例如,如果它找到您正在寻找的包,它将尝试通过连接到存储库并将其下载到您的系统来安装它。
接下来,找到安装包所需的依赖项。如果包具有依赖项,它们会自动安装,无需用户干预。
通过这种方式,包管理器可以执行其他操作,例如重新安装包、删除和升级包。所有这一切最好的部分是一切都是可配置的。例如,您可以配置项目的关键任务包,以便在您自己运行项目时进行更新。
简而言之,包管理器的功能可以概括如下:
- 请确保包裹是正品。此外,通过执行正确的校验和和数字证书身份验证来确保包的完整性得到维护。
- 自动进行包合并以方便使用。
- 请务必安装任何依赖项以避免“依赖项地狱”。
- 管理软件包,包括下载、搜索和安装新的或现有的软件。

流行的包管理器及其比较
Linux 提供了对许多优秀包管理器的访问,包括 APT、YUM、DNF、Pacman、Zypeer 和 Portage。下面让我们来看看它们。
#1.高级打包工具 (APT)
APT 是最流行的 Linux 包管理器之一,因为它随 Ubuntu 和其他基于 Debian 的发行版一起提供。
使用 dkpg 包管理工具和 .deb 包文件格式。它构建在 dkpg 之上,充当 dkpg 包管理器的前端。 APT 允许您安装、搜索、删除和管理 .deb 软件包。
APT 命令包括 apt、apt-cache 和 apt-get。
下面我们来看看其中的一些。
#install package
$ sudo apt install package_name #remove package
$ sudo apt remove package_name #completely purge the package
$ sudo apt purge package_name # Remove leftover dependencies
$ sudo apt autoremove #upgrade
$ sudo apt upgrade # upgrade a single package
$ sudo apt upgrade package_name #2. DPKG
DPKG 代表基于 Debain 的包管理系统。包管理器使用 .deb 扩展名。与 APT 不同,软件包及其依赖项无法自动安装。
要使用 dpkg 安装软件包,需要使用以下命令:
$ dkpg -i package_name.deb同样,您可以通过运行以下命令来删除该包:
$ dkpg -r package_name #3。百胜
YUM 代表“Yellow Dog Updater,Modified”。 YUM 具有 .rpm 软件包文件格式,可用于 Red Hat Enterprise Linux、CentOS 和 Fedora 21 等发行版。
与 APT 一样,YUM 是一个高级包管理器,但它使用 RPM(RPM Package Manager)作为其底层包管理工具。提供易于使用的界面。
要在 YUM 上安装软件包,您需要运行:
$ yum install package_name同样,您可以通过运行以下命令来删除软件包:
$ yum remove package_name要更新包,请运行:
$ yum update package_nameYUM 可以在安装过程中解决依赖关系并检索更新。
#4。地下城与勇士
DNF 代表丹定义的 YUM。它是 YUM 的后继者并在大多数情况下取代它。与 YUM 一样,DNF 使用 RPM 包作为其底层包管理。但是,您可以获得改进,例如更好的文档、更快的依赖关系解析和更好的性能。
#5。转数
Red Hat Package Manager (RPM) 用于基于 Red Hat 的 Linux 操作系统。例如,CentOS 和 Fedora 中都有 RPM。 RPM 使用 .rpm 扩展名。
要使用 RPM 安装,您必须:
$ rpm -i package_name_rpm要删除包,请运行:
$ rpm -e package_name.rpm或者,要升级包,请运行:
$ rpm -e package_name #6。吃豆人
Pacman 是基于 Arch 的 Linux 操作系统(例如 Arch 和 Manjaro)的包管理器。使用 .tar.xz 文件格式。
在这里,包以压缩 tarball 的形式存储和分发。这使得包更小并且更容易分发和安装。 Pacman 使用 Arch Build System (ABS) 来安装软件包。
Pacman 允许您使用以下命令进行安装:
$ pacman -S package_name同样,您可以使用以下命令升级系统中的所有软件包:
$ pacman -Syu然后,要删除 Pacman 中的软件包,请使用以下命令:
$ pacman -Rs package_name #7.拉链
Zypper 是 openSUSE 的包管理器。这是一个 CLI 工具,用于处理 openSUSE Linux 发行版的软件包。
使用类似于 YUM 和 DNF 的 .rpm 包文件格式。然而,这里我们依赖于 Zypper 接口,它使用 ZYpp libzypp 库。这使得 Zypper 比其他包管理器更快。
#8。搬运
Portage 是 Gentoo 发行版的包管理器。 Portage的包文件格式是.tbz2。压缩的 tar 存档或电子构建 shell 脚本。
Portage 的工作方式与列表中的其他包管理器不同。在这里,Portage 使用预编译的二进制包。软件包通过 e-build 进行分发,这是典型的 shell 脚本。您还可以在此处获取 Emerge CLI 工具,该工具可处理用于安装、更新或删除软件包的所有 shell 脚本。
您应该选择哪个 Linux 包管理器?
大多数包管理器都是独立的。大多数时候,您都会受限于所使用的 Linux 发行版。如果您刚刚开始,您可能应该使用 APT。
高级用户还可以使用其他包管理器。然而,最终目标始终是改进软件管理。因此,您可以根据您的要求选择任何包管理器。
使用包管理器进行高效软件管理的技巧
开发人员应该使用包管理器来有效地管理他们的软件。这有利于软件开发过程并提高生产力和工作流程。

最重要的好处是您不必担心“依赖地狱”,或者您的软件无法访问其运行所需的软件包的情况。
使用包管理的最佳实践包括:
- 创建并维护列出所有必需包的适当配置文件。我们还在包旁边提到了包版本,以避免在实现过程中发生冲突。只需保留配置文件即可保护您免受不一致环境的影响。
- 始终使用包管理器将包更新到最新版本。最新版本包含安全补丁,可保护您免受零日攻击。您还可以使用新功能和错误修复。但是,在更新软件包之前,请运行测试环境以查看新软件包是否会导致任何问题。解决这个问题的最佳方法是使流程自动化。
- 创建虚拟环境以进一步改进包管理及其依赖项。
- 删除软件包并改进依赖关系。精益包依赖项可提高安全性并简化您的项目。
- 创建有关依赖项的适当文档。这样做可以节省您处理行李的时间。始终提及版本并尽可能详细。这使得新开发人员更容易加入并改进维护。
接下来,我们将介绍如何使用包管理器。
如何使用包管理器?
在本节中,我们将查看如何使用包管理器的示例。为了简化您的工作,请使用 Advance Package Tool (APT)。您最终可能会使用 APT 作为您的第一个包管理器。
安装包
要安装该软件包,您需要使用以下命令:
$ sudo apt install package-name
让我们使用以下命令安装 gimp:
$ sudo apt install gimp

搜索包
如果您不确定软件包的可用性,您可以搜索在线存储库。
例如,如果您正在寻找视频编辑软件,您应该搜索:
$ sudo apt search “video image” #output
Sorting... Done
Full Text Search... Done
libgavl-dev/jammy 2.0.0~svn6298-1 amd64
low level audio and video library - development files
libgavl-doc/jammy 2.0.0~svn6298-1 all
low level audio and video library - documentation files
libgavl-ocaml/jammy 0.1.6-1build3 amd64
OCaml interface to the gavl library
libgavl-ocaml-dev/jammy 0.1.6-1build3 amd64
OCaml interface to the gavl library
libgavl2/jammy 2.0.0~svn6298-1 amd64
low level audio and video library - runtime files
The syntax for it as below.
$ sudo apt search “search-term‘
Finding Package Dependencies
You can also use package manager to find dependencies for a package that you wantto install. To list the package dependencies, simply run the following command.
$ sudo apt depends package-name
Let’s see what packages does gimp software depends upon.
$ sudo apt depends gimp
#output
gimp
Depends: libgimp2.0 (>= 2.10.30)
Depends: libgimp2.0 (<= 2.10.30-z)
Depends: gimp-data (>= 2.10.30)
Depends: gimp-data (<= 2.10.30-z)
Depends: graphviz
Depends: xdg-utils
Depends: libaa1 (>= 1.4p5)
Depends: libbabl-0.1-0 (>= 1:0.1.78)
Depends: libbz2-1.0
Depends: libc6 (>= 2.34)
Depends: libcairo2 (>= 1.12.2)
Depends: libfontconfig1 (>= 2.12.6)
Depends: libfreetype6 (>= 2.2.1)
Depends: libgcc-s1 (>= 3.3.1)
Depends: libgdk-pixbuf-2.0-0 (>= 2.30.8)
Depends: libgegl-0.4-0 (>= 1:0.4.34)
Depends: libgexiv2-2 (>= 0.10.6)
Depends: libglib2.0-0 (>= 2.56.2)
Depends: libgs9 (>= 9.10~dfsg)
Depends: libgtk2.0-0 (>= 2.24.10)
Depends: libgudev-1.0-0 (>= 167)
Depends: libharfbuzz0b (>= 0.6.0)
Depends: libheif1 (>= 1.8.0)
Depends: libilmbase25 (>= 2.5.7)
Depends: libjpeg8 (>= 8c)
Depends: libjson-glib-1.0-0 (>= 1.5.2)
Depends: liblcms2-2 (>= 2.9)
Depends: liblzma5 (>= 5.1.1alpha+20120614)
Depends: libmng2 (>= 2.0.2)
Depends: libmypaint-1.5-1 (>= 1.5.0)
Depends: libopenexr25 (>= 2.5.7)
Depends: libopenjp2-7 (>= 2.0.0)
Depends: libpango-1.0-0 (>= 1.29.4)
Depends: libpangocairo-1.0-0 (>= 1.29.4)
Depends: libpangoft2-1.0-0 (>= 1.29.4)
Depends: libpng16-16 (>= 1.6.2-1)
Depends: libpoppler-glib8 (>= 0.44.0)
Depends: librsvg2-2 (>= 2.32.0)
Depends: libstdc++6 (>= 5.2)
Depends: libtiff5 (>= 4.0.3)
Depends: libwebp7
Depends: libwebpdemux2
Depends: libwebpmux3
Depends: libwmf0.2-7 (>= 0.2.8.4)
Depends: libx11-6
Depends: libxcursor1 (>> 1.1.2)
Depends: libxext6
Depends: libxfixes3
Depends: libxmu6
Depends: libxpm4
Depends: zlib1g (>= 1:1.1.4)
Breaks: gimp-plugin-registry (<< 7.20140602+nmu1~)
Recommends: ghostscript
|Suggests: gimp-help-en
Suggests: <gimp-help>
gimp-help-ca
gimp-help-de
gimp-help-el
gimp-help-en
gimp-help-es
gimp-help-fr
gimp-help-it
gimp-help-ja
gimp-help-ko
gimp-help-nl
gimp-help-nn
gimp-help-pt
gimp-help-ru
gimp-help-sl
gimp-help-sv
Suggests: gimp-data-extras
Suggests: gvfs-backends
Suggests: libasound2
liboss4-salsa-asound2
Replaces: gimp-plugin-registry (<< 7.20140602+nmu1~) 删除包
如果需要,您还可以删除软件包。要删除软件包,您需要使用以下命令:
$ sudo apt remove package-name
所以,如果你想删除gimp包,你需要运行以下命令:
$ sudo apt remove gimp

但是,这不会删除依赖项或包配置。要完全删除,必须使用 -purge 选项。
$ sudo apt remove package-name --purge
$ sudo apt remove gimp --purge

升级系统包
如果需要升级系统包,可以执行以下命令:
$ sudo apt update && sudo apt upgrade -y

最后一句话
包管理器是 Linux 发行版的核心。这是一个重要的部分,决定了 Linux 上包的管理方式。使用包管理器,您不必担心依赖关系或手动搜索要安装的包。
像 APT 这样的包管理器易于使用,并且可以处理大部分繁重的工作,让您能够专注于重要的事情,例如改进软件开发和改进工作流程。
接下来,了解如何在 Ubuntu、CentOS、Debian 和 Windows 上安装 Docker。




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

