本节提供有关 fpaste 的常规信息:它是什么,正在将什么版本制作为 RPM,其许可证等等。如果你已安装 fpaste ,并查看其元数据时,则可以看到该 RPM 中包含的以下信息:
$ sudo dnf install fpaste $ rpm -qi fpaste Name : fpaste Version : 0.3.9.2 Release : 2.fc30 ...
RPM 会自动添加一些其他标签,以代表它所知道的内容。
至此,我们掌握了要为其构建 RPM 的软件的一般信息。接下来,我们开始告诉 RPM 做什么。
第二部分:准备构建
spec 文件的下一部分是准备部分,用 %prep 代表:
%prep %autosetup
对于 fpaste ,这里唯一的命令是 %autosetup 。这只是将 tar 档案文件提取到一个新文件夹中,并为下一部分的构建阶段做好了准备。你可以在此处执行更多操作,例如应用补丁程序,出于不同目的修改文件等等。如果你查看过 Python 的源 RPM 的内容,那么你会在那里看到许多补丁。这些都将在本节中应用。
通常,spec 文件中带有 % 前缀的所有内容都是 RPM 以特殊方式解释的宏或标签。这些通常会带有大括号,例如 %{example} 。
第三部分:构建软件
下一部分是构建软件的位置,用 %build 表示。现在,由于 fpaste 是一个简单的纯 Python 脚本,因此无需构建。因此,这里是:
%build #nothing required
不过,通常来说,你会在此处使用构建命令,例如:
configure; make
构建部分通常是 spec 文件中最难的部分,因为这是从源代码构建软件的地方。这要求你知道该工具使用的是哪个构建系统,该系统可能是许多构建系统之一:Autotools、CMake、Meson、Setuptools(用于 Python)等等。每个都有自己的命令和语法样式。你需要充分了解这些才能正确构建软件。
第四部分:安装文件
软件构建后,需要在 %install 部分中安装它:
%install mkdir -p %{buildroot}%{_bindir} make install BINDIR=%{buildroot}%{_bindir} MANDIR=%{buildroot}%{_mandir}
在构建 RPM 时,RPM 不会修改你的系统文件。在一个可以正常运行的系统上添加、删除或修改文件的风险太大。如果发生故障怎么办?因此,RPM 会创建一个专门打造的文件系统并在其中工作。这称为 buildroot 。 因此,在 buildroot 中,我们创建由宏 %{_bindir} 代表的 /usr/bin 目录,然后使用提供的 Makefile 将文件安装到其中。
至此,我们已经在专门打造的 buildroot 中安装了 fpaste 的构建版本。
第五部分:列出所有要包括在 RPM 中的文件
spec 文件其后的一部分是文件部分:%files 。在这里,我们告诉 RPM 从该 spec 文件创建的档案文件中包含哪些文件。fpaste 的文件部分非常简单:
%files %{_bindir}/%{name} %doc README.rst TODO %{_mandir}/man1/%{name}.1.gz %license COPYING
请注意,在这里,我们没有指定 buildroot 。所有这些路径都是相对路径。%doc 和 %license 命令做的稍微多一点,它们会创建所需的文件夹,并记住这些文件必须放在那里。
RPM 很聪明。例如,如果你在 %install 部分中安装了文件,但未列出它们,它会提醒你。
第六部分:在变更日志中记录所有变更
Fedora 是一个基于社区的项目。许多贡献者维护或共同维护软件包。因此,当务之急是不要被软件包做了哪些更改所搞混。为了确保这一点,spec 文件包含的最后一部分是变更日志 %changelog :
%changelog * Thu Jul 25 2019 Fedora Release Engineering < ...> - 0.3.9.2-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild -
* Thu Jan 31 2019 Fedora Release Engineering < ...> - 0.3.9.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild -
* Tue Jul 24 2018 Ankur Sinha - 0.3.9.2-1 - Update to 0.3.9.2 -
* Fri Jul 13 2018 Fedora Release Engineering < ...> - 0.3.9.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild -
* Wed Feb 07 2018 Fedora Release Engineering < ..> - 0.3.9.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild -
* Sun Sep 10 2017 Vasiliy N. Glazov < ...> - 0.3.9.1-2 - Cleanup spec -
* Fri Sep 08 2017 Ankur Sinha - 0.3.9.1-1 - Update to latest release - fixes rhbz 1489605 ... ....
(编辑:ASP站长网)
|