什么是 Linux 中的包管理器?它是如何工作的?

最近更新时间2020 年 10 月 4 日通过

 

Linux 发行版之间的主要区别之一是包管理。在 Linux jargon buster 系列的这一部分中,您将了解 Linux 中的打包和包管理器。您将了解什么是包、什么是包管理器以及它们如何工作以及可用的包管理器类型。

Linux 中的包管理器是什么?

简而言之,包管理器是一种允许用户在操作系统上安装、删除、升级、配置和管理软件包的工具。包管理器可以是像软件中心这样的图形应用程序,也可以是像apt-getpacman这样的命令行工具。

你会经常发现我在 It's FOSS 的教程和文章中使用了“包”这个词。要了解包管理器,您必须了解包是什么。

什么是包?

包通常指的是应用程序,但它可以是 GUI 应用程序、命令行工具或软件库(其他软件程序需要)。包本质上是一个存档文件,其中包含二进制可执行文件、配置文件,有时还包含有关依赖项的信息。

在过去,软件过去常常从其源代码安装您将参考一个文件(通常命名为自述文件)并查看它需要哪些软件组件、二进制文件的位置。通常包括配置脚本或生成文件。您必须自己编译软件或自己处理所有依赖项(某些软件需要安装其他软件)。

为了摆脱这种复杂性,Linux 发行版创建了自己的打包格式,为最终用户提供现成的二进制文件(预编译软件),用于安装软件以及一些元数据(版本号、描述)和依赖项。

 

这就像烤蛋糕和买蛋糕一样。

Linux 中的源代码编译与打包

大约在 90 年代中期,Debian 创建了 .deb 或 DEB 打包格式,Red Hat Linux 创建了 .rpm 或 RPM(Red Hat Package Manager 的缩写)打包系统。编译源代码仍然存在,但现在是可选的。

要与包装系统交互或使用包装系统,您需要一个包管理器。

包管理器如何工作?

请记住,包管理器是一个通用概念,它不是 Linux 独有的。您经常会找到适用于不同软件或编程语言的包管理器。专门用于 Python 包的 PIP 包管理器甚至Atom 编辑器也有自己的包管理器

由于本文的重点是 Linux,所以我将从 Linux 的角度来看问题。然而,这里的大部分解释通常也适用于包管理器。

我创建了这个图表(基于 SUSE Wiki),以便您可以轻松了解包管理器的工作原理。

Linux 包管理器说明

几乎所有 Linux 发行版都有软件存储库,它基本上是软件包的集合。是的,可能有不止一个存储库。存储库包含不同种类的软件包。

存储库也有元数据文件,其中包含有关软件包的信息,例如软件包名称、版本号、软件包描述和存储库名称等。这是您在 Ubuntu/Debian 中使用apt show 命令时看到的内容。

您系统的包管理器首先与元数据交互。包管理器在您的系统上创建元数据的本地缓存。当您运行包管理器的更新选项(例如 apt update)时,它会通过引用存储库中的元数据来更新此元数据的本地缓存。

当您运行包管理器的安装命令(例如 apt install package_name)时,包管理器会引用此缓存。如果它在缓存中找到包信息,它会使用 Internet 连接连接到相应的存储库并在安装到您的系统之前先下载包。

一个包可能有依赖关系。这意味着它可能需要安装其他软件包。包管理器通常会处理依赖项并将其与您正在安装的包一起自动安装。

包管理器处理 Linux 中的依赖关系包管理器处理 Linux 中的依赖关系

同样,当您使用包管理器删除一个包时,它会自动删除或通知您系统有可以清理的未使用包。

除了安装、删除这些明显的任务外,您还可以使用包管理器来配置包并根据需要进行管理。例如,您可以阻止从常规系统更新中升级软件包版本。您的包管理器可能还可以做更多的事情。

不同种类的包管理器

包管理器因包装系统而异,但相同的包装系统可能有多个包管理器。

例如,RPM 有YumDNF包管理器。对于 DEB,您有 apt-get、aptitude基于命令行的包管理器。

按存储库查看包 Synaptic突触包管理器

包管理器不一定是基于命令行的。你有像Synaptic这样的图形包管理工具。你的发行版的软件中心也是一个包管理器,即使它在下面运行 apt-get 或 DNF。

结论

我不想更详细地讨论这个话题,因为我可以继续说下去。但这会偏离本主题的目标,即让您对 Linux 中的包管理器有一个基本的了解。

我暂时省略了新的通用包装格式,如 Snap 和 Flatpak。

我确实希望您对 Linux 中的包管理系统有更好的了解。如果您仍然感到困惑或对此主题有疑问,请使用评论系统。我会尽力回答你的问题,如果需要,用新的观点更新这篇文章。

转自:https://itsfoss.com/package-manager/

posted @ 2022-04-06 23:30  pipci  阅读(354)  评论(0编辑  收藏  举报