SPEC %files 속성 및 셸 변수

SPEC %files 속성 및 셸 변수

셸에서 내보낸 위치에 배포된 라이브러리의 압축을 푸는 사양 파일이 있습니다.

%file
${AXIS2_C}/bin/services/services.xml

실패합니다.

error: File not found: root/rpmbuild/BUILDROOT/i386/${AXIS2_C}/bin/services/services.xml

즉, 쉘 변수는 확장되지 않습니다. 이 문제를 해결할 방법이 있나요?

감사해요!

답변1

불행하게도 %prep, %build 또는 %install에 의해 부분적으로 시작된 셸에 정의된 모든 항목은 빌드 환경에서 유지되지 않습니다. %{AXIS2_C}를 정의해야 합니다.매크로변수(셸 변수 아님):

%define AXIS2_C /usr/local/something

그런 다음 두 쉘 모두에서 다음과 같이 참조하십시오.

make whatever FOO=%{AXIS2_C} # or however you used the env variable

그런 다음 %files 섹션에서 다음을 사용하십시오.

%file
%{AXIS2_C}/bin/services/services.xml

일반적으로 초기 %define은 해당 목적에 대한 일부 문서와 함께 사양 파일의 맨 위에 있습니다. 매크로를 동적으로 설정해야 하는 경우 쉘 확장을 위해 %()와 같은 보다 복잡한 RPM 사양 매크로 명령을 사용해야 합니다.

답변2

캡슐화하지 않고 그냥 사용하면 { }어떻게 될까요?" "

%file
"$AXIS2_C"/bin/services/services.xml

(혹은 " "전혀 아님)

관련 정보