2011-08-11 1 views
2

접두사 값/usr/local을 사용하여 설치 후 스크립트로 rpm 패키지를 만들었습니다. --prefix =/tmp/mylocation을 사용하여 rpm을 설치하면 스크립트 실행이 새 위치에서 파일을 찾지 못합니다. 스크립트의 % {접두사}를 사용RPM 설치 중 사후 설치 스크립트에서 사용자 지정 --prefix 값에 액세스하는 방법은 무엇입니까?

퍼센트 포스트 MV/usr/지방/패키지/파일/등

도하지 작업 (MV % {접두사}/패키지/파일/등)을 수행합니다.

답변

2

$ RPM_INSTALL_PREFIX을 (를) 사용하면 다른 사람이 알고 싶어하는 경우에 유용합니다.

2

예, $ RPM_INSTALL_PREFIX를 사용하여 스크립틀릿의 실제 접두사에 액세스 할 수 있지만 일반적으로 RPM이 올바르게 작성된 경우 스크립트를 사용해야 할 이유가 없습니다.

정말로 당신이하고있는 일을 알고 있다면, 스크립틀릿 (% post/% postun 코드)을 사용하면 괜찮습니다. 그러나 모든 RPM 매크로는 빌드하는 동안 확장됩니다. 다음과 같은 일들 :

%post 
echo %{_prefix} 

항상 echo /usr으로 확장됩니다. 생성 된 RPM 내부의 스크립틀릿을 실제로 보면 확장 된 모양을 볼 수 있습니다. 그건 ...

짧은 스 니펫에서 잘못 설치하고있는 것처럼 보입니다. % post/% postun 스크립틀릿에서는 파일 복사/이동이 정상적으로 수행되지 않습니다. 그것들은 사용자의 시스템에서 (보통 루트로서) 실행되며, 사용자의 시스템을 완전히 파괴하는 파괴적인 실수를하는 것은 아주 쉽습니다.

그래서 다소 유효한 조각 :로의 또 다른 측면 노트, 설치로

SourceX: <config_file> 
... 
%install 
... 
mkdir -p %{buildroot}%{_sysconfdir} 
cp %{SOURCEX} %{buildroot}%{sysconfdir} 
... 


%files 
%config(noreplace) %{_sysconfdir}/<config_file> 
... 

USR/(당신이 당신의 자신의 사용을 위해 RPM을 만드는 경우를 제외하고) 일반적으로 눈살을 찌푸리게되는 지역 /.