%if 0%{?fedora} || 0%{?rhel}
# 如果是 Fedora 或 RHEL 系统,执行这里的内容
%endif
这个语句的意思是:如果当前的构建环境是 Fedora 或 RHEL,那么执行 %if
和 %endif
之间的内容。
假设你希望在 Fedora 或 RHEL 系统下启用某个特定的构建选项或补丁,您可以这样写:
%if 0%{?fedora} || 0%{?rhel}
# 只有在 Fedora 或 RHEL 系统上,才执行下面的命令
%patch0 -p1
%endif
在这个例子中,只有在 Fedora 或 RHEL 系统中,补丁 patch0
才会被应用。
要判断 CentOS 7 或 CentOS 8 Stream,可以通过检查系统的版本信息或使用特定的宏。CentOS 7 和 CentOS 8 Stream 分别属于不同的发行版,通常可以通过 centos
或 rhel
宏结合版本号来区分。你可以使用如下的条件判断:
%if 0%{?rhel} == 7
# 如果是 CentOS 7 或 RHEL 7 系统,执行这里的内容
%endif
%if 0%{?rhel} == 8 && 0%{?centos_stream}
# 如果是 CentOS 8 Stream 或 RHEL 8 Stream,执行这里的内容
%endif
解释:
%{?rhel}
:检查是否是 RHEL 系统。
0%{?rhel} == 7
:检查 RHEL 的版本号是否为 7,适用于 CentOS 7(因为 CentOS 和 RHEL 的版本号相同)。
0%{?rhel} == 8 && 0%{?centos_stream}
:检查是否是 CentOS 8 Stream。CentOS 8 Stream 会定义 centos_stream
宏,因此可以用它来做判断。
具体情况:
- CentOS 7:
%{?rhel} == 7
会成立。
- CentOS 8 Stream:
%{?rhel} == 8
且 %{?centos_stream}
会成立。