我只想在特定条件下将文件复制到 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
您可以阅读有关规范语法的更多信息这里。