如何构建RPM

  

本篇文章展示了构建RPM的具体操作,代码简明扼要容易理解,如果在日常工作遇到这个疑问。希望大家通过这篇文章,找到解决疑问的办法。

它们是包含文件和元数据的档案文件。当安装或卸载RPM时,此元数据告诉RPM在哪里创建或删除文件。正如你将在上一篇文章中记住的,元数据还包含有关”依赖项”的信息,它可以是“运行时”或“构建时”的依赖信息。

例如,让我们来看看fpaste。你可以使用dnf下载该RPM。这将下载Fedora存储库中可用的fpaste最新版本。在Fedora 30上,当前版本为0.3.9.2:

<>之前,美元dnf  download  fpaste      …   fpaste fc30.noarch——0.3.9.2 - 2.。rpm

由于这是个构建rpm,因此它仅包含使用,fpaste 所需的文件:

<>之前,美元rpm  -qpl 。/fpaste fc30.noarch.rpm——0.3.9.2 - 2./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.广州

<>强源RPM

在此链条中的下一个环节是源RPM.Fedora中的所有软件都必须从其源代码构建。我们不包括预构建的二进制文件,因此,要制作一个RPM文件,RPM(工具)需要:

<李>

给出必须要安装的文件,

<李>

例如,如果要编译出这些文件,则告诉它们如何生成这些文件,

<李>

告知必须在何处安装这些文件,

<李>

该特定软件需要其他哪些依赖才能正常工作。

源RPM拥有所有这些信息。源RPM与构建RPM相似,但顾名思义,它们不包含已构建的二进制文件,而是包含某个软件的源文件。让我们下载fpaste的源RPM:

<>之前,美元dnf  download  fpaste ——来源      …   fpaste fc30.src——0.3.9.2 - 2.。rpm

注意文件的结尾是src。rpm。所有的rpm都是从源rpm构建的。你也可以使用,dnf 轻松检查“二进制“rpm的源rpm:

<>之前,美元dnf  repoquery ——qf “% {SOURCERPM}“fpaste   fpaste fc30.src——0.3.9.2 - 2.。rpm

另外,由于这是源rpm,因此它不包含构建的文件。相反,它包含有关如何从中构建rpm的源代码和指令:

<>之前,美元rpm  -qpl 。/fpaste fc30.src.rpm——0.3.9.2 - 2.   fpaste-0.3.9.2.tar.gz   fpaste。规范

这里,第一个文件只是fpaste 的源代码。第二个是规范文件.spec文件是个配方,可告诉RPM(工具)如何使用源RPM中包含的源代码创建RPM(档案文件)——它包含RPM(工具)构建RPM(档案文件)所需的所有信息。在规范文件中。当我们软件包维护人员添加软件到Fedora中时,我们大部分时间都花在编写和完善规范文件上。当软件包需要更新时,我们会回过头来调整规范文件。你可以在,https://src.fedoraproject.org/browse/projects/ 的源代码存储库中查看Fedora中所有软件包的规范文件。

请注意,一个源RPM可能包含构建多个RPM的说明.fpaste 是一款非常简单的软件,一个源RPM生成一个“二进制“RPM。而Python则更复杂,虽然只有一个源RPM,但它会生成多个二进制转:

<>之前,美元sudo  dnf  repoquery ——qf “% {SOURCERPM}“python3   python3 fc30.src.rpm——3.7.3 - 1.   python3 fc30.src.rpm——3.7.4 - 1.      美元,sudo  dnf  repoquery ——qf “% {SOURCERPM}“python3-devel   python3 fc30.src.rpm——3.7.3 - 1.   python3 fc30.src.rpm——3.7.4 - 1.      美元,sudo  dnf  repoquery ——qf “% {SOURCERPM}“python3-libs   python3 fc30.src.rpm——3.7.3 - 1.   python3 fc30.src.rpm——3.7.4 - 1.      美元,sudo  dnf  repoquery ——qf “% {SOURCERPM}“python3-idle   python3 fc30.src.rpm——3.7.3 - 1.   python3 fc30.src.rpm——3.7.4 - 1.      美元,sudo  dnf  repoquery ——qf “% {SOURCERPM}“python3-tkinter   python3 fc30.src.rpm——3.7.3 - 1.   python3 fc30.src——3.7.4 - 1.。rpm

用rpm行话来讲,“python3”是“主包”,因此该规范文件将称为python3。规范。所有其他软件包均为“子软件包”。你可以下载python3的源RPM,并查看其中的内容。(提示:补丁也是源代码的一部分):

<>之前,美元dnf  download ——source  python3   python3 fc30.src.rpm——3.7.4 - 1.      美元,rpm  -qpl 。/python3 fc30.src.rpm——3.7.4 - 1.   00001 - rpath.patch   00102 - lib64.patch   00111 -不-静态lib.patch   00155 -避免- ctypes thunks.patch   00170 - gc - assertions.patch   00178 -不要sysconfig.patch——复制——旗帜   00189 -使用rpm - wheels.patch   00205 -让libpl lib64.patch——尊重   00251 -修改-用户-安装- location.patch   00274 -修正-拱names.patch   00316 -马克- bdist_wininst unsupported.patch   Python-3.7.4.tar.xz   check-pyc-timestamps.py   idle3.appdata.xml   idle3.desktop   python3。规范

如何构建RPM