
다음과 같은 특정 조건에서만 파일을 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 문을 배치하는 것을 좋아하지 않는 것 같습니다. rpmbuild를 행복하게 만들기 위해 if 문을 어떻게 변경합니까?
답변1
Spec에는 자체 조건 구문이 있으므로 다음과 같은 구문을 사용해야 합니다.
%if %{test} == "true"
%attr(0644, user1,user1) /home/user1/file1.txt
%endif
정식 구문에 대해 자세히 알아볼 수 있습니다.여기.