什么是包管理器?
简单来说,“ 包管理器(package manager)”(或“软件包管理器”)是一种工具,它允许用户在操作系统上安装、删除、升级、配置和管理软件包。软件包管理器可以是像“软件中心”这样的图形化应用,也可以是像 apt-get 或 pacman 这样的命令行工具。
你会发现我经常在教程和文章中使用“包”这个词。要了解包管理器,你必须了解什么是包。
什么是包?
一个“ 包(package)”(或“软件包”)通常指的是一个应用程序,它可以是一个 GUI 应用程序、命令行工具或(其他软件程序需要的)软件库。包本质上是一个存档文件,包含二进制可执行文件、配置文件,有时还包含依赖关系的信息。
在旧时代, 软件曾经是从它的源代码安装的 。你会参考一个文件(通常命名为 README),看看它需要什么软件组件、二进制文件的位置。它通常包括一个配置脚本或 Makefile。你必须自己编译该软件或自己处理所有的依赖关系(有些软件需要安装其他软件)。
为了摆脱这种复杂性,Linux 发行版创建了自己的打包格式,为终端用户提供随时可用的二进制文件(预编译软件),以便安装软件,同时提供一些 元数据 (版本号、描述)和依赖关系。
这就像烤蛋糕与买蛋糕一样。
大约在上世纪 90 年代中期,Debian 创建了 DEB 打包格式(.deb),Red Hat Linux 创建了 RPM(Red Hat Package Manager 的缩写)打包系统(.rpm)。编译源代码的方式仍然存在,但现在是可选的。
要与打包系统交互或使用打包系统,你需要一个包管理器。
包管理器是如何工作的?
请记住,包管理器是一个通用的概念,它并不是 Linux 独有的。你会经常发现各种软件或编程语言的包管理器。有 只是针对 Python 包的 PIP 包管理器 。甚至 Atom 编辑器也有自己的包管理器 。
由于本文的重点是 Linux,所以我会从 Linux 的角度出发。不过,这里的大部分解释也可以应用于一般的包管理器。
我创建了这个图(基于 SUSE Wiki),这样你就可以很容易理解包管理器是如何工作的。