Centos
如何在 RPM 規範文件中放置 %install 和 %file 宏的條件?
我只希望在特定條件下將文件複製到 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
您可以在此處閱讀有關規範語法的更多資訊。