我有一个规范文件,其中的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.html和https://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} 。