diff --git a/articles/305-module-and-checklist-of-spec.md b/articles/305-module-and-checklist-of-spec.md index 50e204d1bcf2d1bf8709bcdd9c266dc1f6bedbcf..9d46f354d55fa98378698ab0bbf36bab60866f1c 100644 --- a/articles/305-module-and-checklist-of-spec.md +++ b/articles/305-module-and-checklist-of-spec.md @@ -18,8 +18,9 @@ | --- | --- | --- | --- | | 2022.2.10 | v1.0 | [@林生](https://gitee.com/forrest_ly) | 初始版本 | | 2022.3.31 | v1.1 | [@伊和](https://gitee.com/yueeranna) | 添加规范 | -| 2022.4.20 | v1.2 | [@伊和](https://gitee.com/yueeranna) | 添加epoch版本号说明 | +| 2022.4.20 | v1.2 | [@伊和](https://gitee.com/yueeranna) | 添加 epoch 版本号说明 | | 2022.8.3 | v1.3 | [@橘悦](https://gitee.com/happy_orange)| 新增模版和 checklist | +| 2023.2.7 | v1.4 | [@橘悦](https://gitee.com/happy_orange) | 增加 Requires 的介绍并修改 doc 包的依赖关系 | ## 2 SPEC File 写作规范 ### 2.1 spec 基础模版 @@ -67,7 +68,7 @@ python 3 bindings for the %{name} library. %package doc Summary: Documentation files for %{name} -Requires: %{name} = %{version}-%{release} +Requires: %{name} = %{EVR} BuildArch: noarch %description doc @@ -152,7 +153,7 @@ xxxx package for Python %package -n python3-%{pypi_name}-doc Summary: doc files for python3-%{pypi_name} -Requires: python3-%{pypi_name} = %{verison}-%{release} +Requires: python3-%{pypi_name} = %{EVR} %description -n python3-%{pypi_name}-doc doc files for python3-%{pypi_name} @@ -233,7 +234,7 @@ rm -rf %{pypi_name}.egg-info ``` # rpm -qp alsa-lib-1.2.7.2-2.an23.x86_64.rpm --provides | grep abi abi(alsa-lib) = 1.2.7.2 - + # rpm -qp alsa-lib-1.2.7.2-2.an23.x86_64.rpm --provides | grep api api(alsa-lib) = 1.2.7.2 ``` @@ -255,10 +256,11 @@ rm -rf %{pypi_name}.egg-info | Source0 | 上游源代码压缩存档的路径。这应该指向存档的可访问且可靠的存储,例如,上游页面而不是打包程序的本地存储。
如果需要,可以添加更多 SourceX 指令,每次递增编号,例如:Source1、Source2、Source3 等。 |必选| | Patch0 | 对源码进行的修改以补丁的形式。
1. 可以添加更多 PatchX 指令,每次递增编号,例如:Patch1、Patch2、Patch3 等。
2. 自研补丁序号从100、1000、10000等编号开始。 |可选| | BuildArch | 声明该软件的构建体系结构。
1. koji 构建时默认为:x86_64 和 aarch64
2. 本地构建时会自动继承构建它的机器的体系结构
3. 如果不依赖体系结构,可以声明:BuildArch: noarch
4. 如果仅涉及一个架构,则需要将对应的架构声明:BuildArch:x86_64 或 BuildArch:aarch64 |可选| -| ExcludeArch | 声明该软件不需要的架构体系。
1. 默认不需要
2. 指定不进行编译的架构,举例:ExcludeArch: x86_64 | 可选 | +| ExcludeArch | 声明该软件不需要的架构体系。
1. 默认不需要
2. 指定不进行编译的架构,举例:ExcludeArch: x86_64 | 可选 | | ExclusiveArch | 声明该软件需要的架构体系。
1. 默认不需要
2. 指定进行编译的架构,举例:ExclusiveArch: x86_64 | 可选 | -| BuildRequires | 声明该软件构建所需要的全部软件包列表。
1. 有多个条目 BuildRequires每个条目在 SPEC 文件中各占一行
2. 每个条目内不同软件使用空格隔开
3. 直接声明依赖软件的 package name,不要包含: %{_isa}、/usr/bin/xx、pkg-config(xx)、/usr/lib64/xx.so 等 |必选| -| **spec body** | | +| BuildRequires | 声明该软件构建所需要的全部软件包列表。
1. 有多个条目 BuildRequires 每个条目在 SPEC 文件中各占一行
2. 每个条目内不同软件使用空格隔开
3. 直接声明依赖软件的 package name,不要包含: %{_isa}、/usr/bin/xx、pkg-config(xx)、/usr/lib64/xx.so 等 |必选| +| Requires | 声明该软件运行所需要的全部软件包列表。
1. 有多个条目 Requires 每个条目在 SPEC 文件中各占一行
2. 每个条目内不同软件使用空格隔开
3. 直接声明依赖软件的 package name,不要包含: %{_isa}、/usr/bin/xx、pkg-config(xx)、/usr/lib64/xx.so 等
4. 需要声明依赖软件的版本限制时,如果是其他软件,则尽量使用 version,特殊情况增加 release;如果是本软件,则精确到 release;如果是 doc 包则使用 %{ERV} ,可以省略 epoch 的检查。 |必选| +| **spec body** | || | **字段** | **定义** | **是否可选** | | %description | RPM 中打包的软件的完整描述。该描述可以跨越多行并且可以分成段落。 | 必选 | | %prep | 用于准备软件包构建所需要的源码。
1. 路径信息:将 tar.gz 从 ~/rpmbuild/SOURCES/ 目录下解压到 ~/rpmbuild/BUILD/ 下
2. 建议使用 %autosetup -n %{name}-%{version} -p1,可以自动按照补丁定义顺序将补丁以 -p1 形式打入
3. 允许在此处拷贝 source 文件,例如:cp %{SOURCE1} ./
4. 也允许去执行一些 shell 脚本 | 必选 |