4.2. 关于 spec 文件
spec
文件是一个文件,其中包含 rpmbuild
实用程序用来构建 RPM 软件包的指令。此文件通过在一系列部分中定义指令,为构建系统提供必要信息。这些部分在 spec
文件的 Preamble 和 Body 部分中定义:
- Preamble 部分包含一系列在 Body 部分中使用的元数据项。
- Body 部分代表指令的主要部分。
4.2.1. Preamble 项 复制链接链接已复制到粘贴板!
以下是您可以在 RPM spec
文件的 Preamble 部分中使用的一些指令。
指令 | 定义 |
---|---|
|
必须与 |
| 软件的上游版本。 |
| 发布软件包版本的次数。
将初始值设为 |
| 软件包的一个简短摘要。 |
| 被打包的软件许可证。
如何在 |
| 有关软件的更多信息的完整 URL,例如,用于打包软件的上游项目网站。 |
| 未修补上游源代码的压缩存档的路径或 URL。此链接必须指向该存档的可访问且可靠的存储,例如上游页面,而不是打包程序的本地存储。
您可以定义多个 |
| 应用到源代码的第一个补丁名称(如有必要)。
您可以在指令名称末尾应用
您可以使用 %patch0、 |
| 将构建软件的架构。
如果软件不是独立于架构,例如,如果您完全使用解释编程语言编写软件,请将值设为 |
|
使用编译语言构建程序所需的以逗号分隔的软件包列表。 |
|
安装之后,软件需要以逗号或空格分开的软件包列表。 |
|
如果某一软件无法在特定的处理器架构上运行,您可以在 |
|
逗号或空格分开的软件包列表,不能在系统中安装这些软件包,以便您的软件在安装时可以正常工作。可能存在多个 |
|
|
|
如果您在软件包中添加 |
Name
、Version
和 Release
(NVR)指令以 name-version-release
格式包含 RPM 软件包的文件名。
您可以使用 rpm
命令查询 RPM 数据库来显示特定软件包的 NVR 信息,例如:
rpm -q bash
# rpm -q bash
bash-4.4.19-7.el8.x86_64
在这里,bash
是软件包名称,4.4.19
是版本,7el8
是发行版本。x86_64
标记是软件包架构。与 NVR 不同,架构标记不是直接控制 RPM 软件包器,而是由 rpmbuild
构建环境定义。这种情况的例外是独立于架构的 noarch
软件包。
4.2.2. 正文项 复制链接链接已复制到粘贴板!
以下是 RPM spec
文件的 Body 部分中使用的项目。
指令 | 定义 |
---|---|
| RPM 中打包的软件的完整描述。此描述可跨越多行,并且可以分为几个段落。 |
|
用于为构建准备软件的命令或一系列命令,例如,用于在 |
| 将软件构建到机器代码(用于编译的语言)或字节代码(用于某些解释语言)的命令或一系列命令。 |
|
在软件构建后,
请注意, |
| 用于测试软件的命令或一系列命令,如单元测试。 |
| 由 RPM 软件包提供的文件列表,安装用户系统及其完整路径位置。
在构建期间,如果
在 |
|
在不同 |
4.2.3. 高级 items 复制链接链接已复制到粘贴板!
spec
文件可以包含高级项目,如 Scriptlets 或 Triggers。
Scriptlets 和 Triggers 在安装过程中在最终用户系统的不同点上生效,而不是构建过程。