Syntax 将命令输出值定义为rpm SPEC文件中的变量

Syntax 将命令输出值定义为rpm SPEC文件中的变量,syntax,rpm,specifications,Syntax,Rpm,Specifications,我试图在SPEC文件中定义一个变量,并将命令输出指定为该变量的值 %define kernel %(sudo lspci|egrep -q 'Ethernet.*Realtek'|echo $?) %if 0%{?kernel} < 1 Requires: kmod-r8168 >= 8.048.00-1.el7_7.elrepo %endif %define内核%(sudo lspci | egrep-q’Ethernet.*Realtek | echo$?) %如果0%{?

我试图在SPEC文件中定义一个变量,并将命令输出指定为该变量的值

%define kernel %(sudo lspci|egrep -q 'Ethernet.*Realtek'|echo $?)
%if 0%{?kernel} < 1
Requires:   kmod-r8168 >= 8.048.00-1.el7_7.elrepo
%endif
%define内核%(sudo lspci | egrep-q’Ethernet.*Realtek | echo$?)
%如果0%{?内核}<1
要求:kmod-r8168>=8.048.00-1.el7_7.elrepo
%恩迪夫
在这里,我定义了一个变量“kernel”,并希望将命令
sudo lspci | egrep-q“Ethernet.*Realtek'| echo$?
的输出分配给
kernel
变量


上面的代码没有给出任何错误,但是if条件逻辑不起作用。我们可以将命令输出分配给SPEC文件中的变量吗?

代码是正确的。但是,您似乎假设在安装包时会对其进行解释。这是一个错误的假设

构建rpm包时,对所有宏进行评估

也就是说,代码的语义是:当从spec/src.rpm构建rpm包的机器具有Realtek Ethernet时,将此要求放在那里

如果您想这样做:“如果用户机器具有Realtek网卡,则需要额外的软件包”--这不能使用rpm功能完成。您必须使用一些配置管理。例如,Ansible