如何从spec文件中确定构建RPM包的系统是否是CentOS?

如何从spec文件中确定构建RPM包的系统是否是CentOS?

我有一个规范文件,其中的Requires:字段取决于它所构建的特定发行版。所以我需要能够创建一个条件结构,如下所示:

%if %{?fedora}
Requires:       xterm libssh clang
BuildRequires:  wxGTK3-devel  cmake clang-devel lldb-devel libssh-devel hunspell-devel sqlite-devel desktop-file-utils
%endif
%if (centos test)
Requires:       xterm libssh clang
BuildRequires:  wxGTK3-devel cmake clang-devel lldb-devel libssh-devel hunspell-devel
%endif

where(centos test)将被替换为一些测试,看看我们使用的发行版是否是 CentOS。我尝试过使用%{?rhel}and%{?centos}作为这个测试。但两者都失败了。我也尝试过这些测试%{rhel}%{centos}但都不起作用(因为它似乎无法识别这些宏)。我搜索了 RPM 宏参考(例如https://docs.fedoraproject.org/ro/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s07.htmlhttps://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html-single/RPM_Guide/index.html)但都没有提到这些类型的宏。

答案1

引用自https://fedoraproject.org/wiki/Packaging:DistTag#Conditionals

请记住,如果您要检查特定的发行版系列,则需要使用:

%if 0%{?rhel}

并不是

%if %{?rhel}

如果没有额外的 0,如果 %{rhel} 未定义,则 %if 条件将不再存在,并且 rpm 将无法构建。

类似地,您需要在第一个条件中使用 0%{?fedora} 。

相关内容