셸에서 내보낸 위치에 배포된 라이브러리의 압축을 푸는 사양 파일이 있습니다.
즉
%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
(혹은 " "
전혀 아님)