关于 rpm 包,那些你不知道的事情


关于 rpm 包,那些你不知道的事情

文章插图
 
这篇文章总结了这些软件是如何“打包”的,以及使之成为可能的基础工具,如 rpm 之类 。
-- Ankur Sinha(作者)
也许,Fedora 社区追求其 促进自由和开源的软件及内容的使命 的最著名的方式就是开发 Fedora 软件发行版 了 。因此,我们将很大一部分的社区资源用于此任务也就不足为奇了 。这篇文章总结了这些软件是如何“打包”的,以及使之成为可能的基础工具,如 rpm 之类 。
RPM:最小的软件单元可供用户选择的“版本”和“风味版”( spins / labs / silverblue )其实非常相似 。它们都是由各种软件组成的,这些软件经过混合和搭配,可以很好地协同工作 。它们之间的不同之处在于放入其中的具体工具不同 。这种选择取决于它们所针对的用例 。所有这些的“版本”和“风味版”基本组成单位都是 RPM 软件包文件 。
RPM 文件是类似于 ZIP 文件或 tarball 的存档文件 。实际上,它们使用了压缩来减小存档文件的大小 。但是,除了文件之外,RPM 存档中还包含有关软件包的元数据 。可以使用 rpm 工具查询:
$ rpm -q fpastefpaste-0.3.9.2-2.fc30.noarch$ rpm -qi fpasteName : fpasteVersion : 0.3.9.2Release : 2.fc30Architecture: noarchInstall Date: Tue 26 Mar 2019 08:49:10 GMTGroup : UnspecifiedSize : 64144License : GPLv3+Signature : RSA/SHA256, Thu 07 Feb 2019 15:46:11 GMT, Key ID ef3c111fcfc659b9Source RPM : fpaste-0.3.9.2-2.fc30.src.rpmBuild Date : Thu 31 Jan 2019 20:06:01 GMTBuild Host : buildhw-07.phx2.fedoraproject.orgRelocations : (not relocatable)Packager : Fedora ProjectVendor : Fedora ProjectURL : https://pagure.io/fpasteBug URL : https://bugz.fedoraproject.org/fpasteSummary : A simple tool for pasting info onto sticky notes instancesDescription :It is often useful to be able to easily paste text to the FedoraPastebin at http://paste.fedoraproject.org and this simple scriptwill do that and return the resulting URL so that people mayexamine the output. This can hopefully help folks who are forsome reason stuck without X, working remotely, or any otherreason they may be unable to paste something into the pastebin$ rpm -ql fpaste/usr/bin/fpaste/usr/share/doc/fpaste/usr/share/doc/fpaste/README.rst/usr/share/doc/fpaste/TODO/usr/share/licenses/fpaste/usr/share/licenses/fpaste/COPYING/usr/share/man/man1/fpaste.1.gz安装 RPM 软件包后,rpm 工具可以知道具体哪些文件被添加到了系统中 。因此,删除该软件包也会删除这些文件,并使系统保持一致状态 。这就是为什么要尽可能地使用 rpm 安装软件,而不是从源代码安装软件的原因 。
依赖关系如今,完全独立的软件已经非常罕见 。甚至 fpaste ,连这样一个简单的单个文件的 Python 脚本,都需要安装 Python 解释器 。因此,如果系统未安装 Python(几乎不可能,但有可能),则无法使用 fpaste 。用打包者的术语来说,“Python 是 fpaste 的运行时依赖项 。”
构建 RPM 软件包时(本文不讨论构建 RPM 的过程),生成的归档文件中包括了所有这些元数据 。这样,与 RPM 软件包归档文件交互的工具就知道必须要安装其它的什么东西,以便 fpaste 可以正常工作:
$ rpm -q --requires fpaste/usr/bin/python3python3rpmlib(CompressedFileNames) <= 3.0.4-1rpmlib(FileDigests) <= 4.6.0-1rpmlib(PayloadFilesHavePrefix) <= 4.0-1rpmlib(PayloadIsXz) <= 5.2-1$ rpm -q --provides fpastefpaste = 0.3.9.2-2.fc30$ rpm -qi python3Name : python3Version : 3.7.3Release : 3.fc30Architecture: x86_64Install Date: Thu 16 May 2019 18:51:41 BSTGroup : UnspecifiedSize : 46139License : PythonSignature : RSA/SHA256, Sat 11 May 2019 17:02:44 BST, Key ID ef3c111fcfc659b9Source RPM : python3-3.7.3-3.fc30.src.rpmBuild Date : Sat 11 May 2019 01:47:35 BSTBuild Host : buildhw-05.phx2.fedoraproject.orgRelocations : (not relocatable)Packager : Fedora ProjectVendor : Fedora ProjectURL : https://www.python.org/Bug URL : https://bugz.fedoraproject.org/python3Summary : Interpreter of the Python programming languageDescription :Python is an accessible, high-level, dynamically typed, interpreted programminglanguage, designed with an emphasis on code readability.It includes an extensive standard library, and has a vast ecosystem ofthird-party libraries.The python3 package provides the "python3" executable: the referenceinterpreter for the Python language, version 3.The majority of its standard library is provided in the python3-libs package,which should be installed automatically along with python3.The remaining parts of the Python standard library are broken out into thepython3-tkinter and python3-test packages, which may need to be installedseparately.Documentation for Python is provided in the python3-docs package.Packages containing additional libraries for Python are generally named withthe "python3-" prefix.$ rpm -q --provides python3python(abi) = 3.7python3 = 3.7.3-3.fc30python3(x86-64) = 3.7.3-3.fc30python3.7 = 3.7.3-3.fc30python37 = 3.7.3-3.fc30


推荐阅读