%pre %post 스크립트릿에서 RPM 내에 패키지된 파일이나 스크립트를 참조하는 방법

%pre %post 스크립트릿에서 RPM 내에 패키지된 파일이나 스크립트를 참조하는 방법

속성 파일, 구성 파일, 스크립트, JAR 등을 포함한 다양한 파일을 패키징하는 RPM 패키지를 구축 중입니다. 이제 %pre, %post, %preun 및 %postun 스크립트를 작성할 때 script/ 폴더(RPM으로 패키지됨)에 있는 일부 스크립트를 사용해야 합니다. 그래서 저는 다음과 같은 일을 할 수 있기를 원합니다.

%pre
export scripts/important.sh
someFunctionFromImportant parameter
%post
. scripts/anotherScript.sh
someFuncFromAnotherScript parameters

이제 이 RPM을 임의의 시스템에 복사하여 붙여넣은 다음 설치하고 싶기 때문에 스크립트 없이 실행 %pre해야 합니다 %post. 나는 많은 튜토리얼을 읽었으며 여전히 이를 달성할 수 있는 방법을 찾고 있습니다. 참고: 내 요구 사항으로 인해 RPM이 이미 존재하는 시스템에 이러한 스크립트를 설치할 수 없습니다. RPM 파일 자체와 마찬가지로 설치와 사전 및 사후 설치 스크립트를 사용하여 모든 작업을 깔끔하게 수행해야 합니다.

답변1

귀하의 질문을 제가 이해한 바에 따르면 귀하가 원하는 것은 불가능합니다. 스크립틀릿 %pre은 RPM의 어떤 항목이 디스크에서 사용 가능해지기 전에 실행되므로 패키지의 어떤 항목도 참조할 수 없습니다. 반면에 스크립틀릿은 %post패키지 페이로드가 준비된 후에 실행되므로 해당 부분은 괜찮습니다. RPM 패키지 설치/업그레이드/제거 작업 순서에 대한 자세한 내용은 다음을 참조하세요.https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Scriptlet_Ordering. 이 URL은 Fedora 프로젝트에만 해당되지만 해당 정보는 모든 RPM 기반 Linux 배포판에 유효해야 합니다.

답변2

에서 사용할 수 있어야 하는 필수 구성 요소가 있는 경우 %pre다른 rpm을 생성하고 이에 의존합니다. 아니면 curl필요한 파일에서와 같은 끔찍한 일을 했을 수도 있습니다. 나는 my-project-tools귀하의 전제 조건을 포함하는 rpm 또는 이와 유사한 것이 가장 좋다고 생각합니다.

관련 정보