如何将 %install 和 %file 宏的条件放入 RPM 规范文件中?

如何将 %install 和 %file 宏的条件放入 RPM 规范文件中?

我只想在特定条件下将文件复制到 RPM 规范文件中,例如:

%install 
if [ %{test}=="true" ]; 
then
    cp %{topdirectory}/file1.txt $RPM_BUILD_ROOT/home/user1
fi

%files
if [ %{test}=="true" ]; 
then
   %attr(0644, user1,user1) /home/user1/file1.txt
fi

当我执行 rpmbuild 时,我传递一个标志来定义“测试”是什么,例如:

rpmbuild --define="test true" --bb --quiet myspecfile.spec

但是,我收到一条错误消息,如下所示:

error: File must begin with "/": if
error: File must begin with "/": [
error: File must begin with "/": false=="true"
error: File must begin with "/": ]; 
error: File must begin with "/": then
error: File must begin with "/": fi

我不太确定这个错误消息的含义,但它显然不喜欢我在 %files 宏或 %install 宏附近放置 if 语句。如何更改 if 语句以使 rpmbuild 满意?

答案1

Spec 有自己的条件语法,您需要使用如下所示的语法:

%if %{test} == "true"
%attr(0644, user1,user1) /home/user1/file1.txt
%endif

您可以阅读有关规范语法的更多信息这里

相关内容