Centos

如何在 RPM 規範文件中放置 %install 和 %file 宏的條件?

  • July 28, 2022

我只希望在特定條件下將文件複製到 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 滿意?

Spec 有自己的條件語法,你需要使用這樣的東西:

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

您可以在此處閱讀有關規範語法的更多資訊。

引用自:https://unix.stackexchange.com/questions/711550