%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 문을 배치하는 것을 좋아하지 않는 것 같습니다. rpmbuild를 행복하게 만들기 위해 if 문을 어떻게 변경합니까?

답변1

Spec에는 자체 조건 구문이 있으므로 다음과 같은 구문을 사용해야 합니다.

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

정식 구문에 대해 자세히 알아볼 수 있습니다.여기.

관련 정보