rpm 规范:基于发行版的条件要求

rvs*_*rvs 8 redhat rpm centos5

我正在尝试为 RHEL/CentOS/SL 5 和 6 编写单个 rpm 规范。此规范适用于 python 应用程序,因此构建过程没有区别。但是在 RHEL/CentOS5 上,我需要添加一个额外的依赖项。

我将如何仅为 el5 定义依赖项?我试过以下:

%if 0%{?redhat} == 5 || 0%{?centos} == 5
Requires:   kmod-coretemp
%endif
Run Code Online (Sandbox Code Playgroud)

不起作用(在 CentOS5 上构建不会添加 kmod-coretemp 依赖项)。

我也试过以下:

%if %{?dist} == "el5"
Run Code Online (Sandbox Code Playgroud)

它报告语法错误。我确定 dist 宏已设置并包含“el5”。但我不确定 rpm 中 if 条件的语法是什么?rpmguide 没有详细的答案。

Dan*_*ley 9

Fedora wiki 像往常一样提供了关于打包的最佳指南。看看Packaging:DistTag页面。您可以使用%{el5}变量和速记条件来确保在Require为 EL5 构建包时使用相关行。

%{?el5:Requires: kmod-coretemp}
Run Code Online (Sandbox Code Playgroud)

您可能希望将dist标签添加到版本字段以避免以后包之间的混淆:

Release: 1%{?dist}
Run Code Online (Sandbox Code Playgroud)

请参阅Dist 标签的用途