Linux 中的包管理简介
所有操作系统都依赖于一组软件应用程序来执行用户预期的任务。早期,应用程序在发布前会进行错误测试,以提供更好的用户体验。现在该软件应用程序已发布,旨在在新版本中修复错误。此外,每个应用程序都有其更新程序,或者用户必须弄清楚如何获取升级的软件版本。
Linux 通过创建打包格式、软件包和独特的安装工具,采用了及时的软件管理实践。本文讨论软件包安装过程如何从tarball包安装升级到DEB和RPM包管理。
压缩包
早期的Linux系统软件添加需要用户下载源代码,将其编译为二进制文件,然后将其添加到系统中。有时,某些用户会以称为 tarball 的编译形式提供该软件。 tarball 包含多个文件,包括可执行文件、配置文件、文档和库。这样所有的文件都被压缩成一个文件,以便于存储和分发。
软件安装后,文件分布在系统的相关目录中。然而,创建 tarball 的方法可能看起来很简单,但安装过程使某些任务变得困难,例如:
它需要用户独立/手动追踪安装软件的依赖关系,使得依赖的软件本身具有一定的依赖关系。
由于 tarball 包安装会分散文件,因此即使用户知道命令,也不容易找到包文档和配置文件。
很难找到文件来卸载软件。
由于 tarball 中缺少元数据,用户在安装后对版本详细信息感到困惑。这使得跟踪错误和获取新版本变得困难。
为了克服这些问题,Linux 发行版中的软件打包演变为两种打包格式,即 DEB 和 RPM 打包。
德比包装
Debian 和基于 Debian 的 Linux 发行版使用基于 DEB 的软件包。 .deb 文件包含所有具有 .ar 存档格式的元数据的相关文件。元数据包含所有相关的软件详细信息,涉及版本、描述、依赖项、许可证等。Debian 发行版提供多个图形界面和基于终端的工具来管理 .deb 文件。其中一些包括:
apt: Ubuntu 高级打包工具,提供 apt-get 命令来搜索和管理软件包安装。
aptitude:该命令是一个包管理工具,提供在终端内运行的基于文本的界面。它通过使用箭头键并突出显示所选选项来执行包安装、删除和升级。
Ubuntu 软件中心:它是一个直观的图形用户界面,供 Linux 初学者搜索和安装软件包。
尽管 Ubuntu 软件中心很直观,但先进的打包管理系统胜过所有其他用于 DEB 打包的 PMS。
转速包装
RPM (.rpm) 打包格式是 SUSE、Fedora、Red Hat 和基于 RHEL 的 Linux 发行版的首选。 RPM 软件包是文件的混合体,为 RHEL 发行版用户提供照片查看器、文字处理器或其他软件。它还包含配置文件、元数据和创建软件所需的其他文档。
RPM 包管理器将通过上游软件提供商提供的二进制文件和所有必需的文件合并到 RPM 包中。在将包添加到存储库之前,会对它们进行签名,以便用户可以验证其有效性。现在,用户可以通过 NFS 或 FTP 服务器从放置在 CD 或目录中的存储库访问这些软件包进行安装。
RPM 软件包名称说明了有关该软件的很多信息。例如,输入以下命令可以查看当前安装的firefox RPM包的详细信息:
firefox-87.0-12.fc34.x86_64
87.0:代表 Mozilla 项目分配的版本号
12:代表红帽在同一版本号下重建软件包的次数。
fc34.x86_64:表示该软件包是针对Fedora Linux和x86 64位架构构建和编译的。
要查找软件包的更多详细信息,请使用带有 -qi 选项的 rpm 命令查询 RPM 本地数据库:
Name : firefox
Version : 87.0
Release : 12.fc34
Architecture: x86_64
Install Date: Fri 23 Apr 2021 06:58:19 AM EDT
Group : Unspecified
Size : 261285879
License : MPLv1.1 or GPLv2+ or LGPLv2+
Signature : RSA/SHA256, Tue 13 Apr 2021 04:59:11 AM EDT, Key ID 1161ae6945719a39
Source RPM : firefox-87.0-12.fc34.src.rpm
Build Date : Mon 12 Apr 2021 04:56:26 AM EDT
Build Host : buildhw-x86-10.iad2.fedoraproject.org
Packager : Fedora Project
Vendor : Fedora Project
URL : https://www.mozilla.org/firefox/
Bug URL : https://bugz.fedoraproject.org/firefox
Summary : Mozilla Firefox Web browser
Description :
Mozilla Firefox is an open-source web browser designed for standards
compliance, performance, and portability.
上面的输出现在代表了软件包的构建和安装日期、大小、firefox 软件包组的许可以及许多其他详细信息。尽管 rpm 是第一个用于安装更新、查询、包删除等的 RPM 打包工具命令,但它有一些根本性的缺点。
依赖地狱:在缺少依赖项的情况下,RPM 包安装会失败,同时告知所需的组件。此外,依赖包本身也有一些完成工作所需的依赖项。
RPM 位置: RPM 软件包管理器希望在安装之前收到软件包位置。如果该软件包在当前文件夹中可用,则需要输入 firefox-87.0-12.fc34.x86_64.rpm,如果它在服务器上,则需要输入 http://example.com/firefox-87.0-12.fc34 .x86_64.rpm。
而当时基于DEB的软件打包可以自动解决依赖问题。然而,随着 RPM 软件包越来越流行,这些问题已经通过 yum 工具得到了解决。
百胜餐饮项目
引入了 Yellowdog Updater Modified (YUM) 工具,通过将每个 RPM 包视为大型软件存储库的一部分来管理 RPM 包依赖性。这样处理依赖关系的问题是针对Linux发行版或第三方软件的。
它通过存储库可以相互构建的概念解决了问题。例如,如果用户从 rpmfusion.org 存储库安装某个软件包,这需要主 Fedora 存储库中的命令/工具,那么它也可以访问该软件包。因此,它将同时下载并安装。
结论
这些文章简要介绍了 Linux 包管理系统的发展历史。我们讨论了基于 .deb 和 .rpm 的软件打包系统,适用于 Debian 和基于 RHEL 的 Linux 发行版,这是它们最常用的工具。我们还从早期开发阶段面临的问题来讨论包管理系统的演变。