2013-04-18 3 views
2

rpmbuild의 일부 디렉토리를 혼동합니다.rpmbuild buildroot를 제어하고 디렉토리를 설치하는 방법

1 : buildroot : 최종 사용자가 바이너리 패키지를 설치할 때 설치해야하는 파일을 저장하는 데 사용해야합니다.

질문 :이 디렉토리를 제어하는 ​​방법은 무엇입니까? BuildRoot는 무엇을 의미합니까? 나는에 BuildRoot를 설정 어떤

$ cat 3.spec 
.. 
BuildRoot: /opt/abc 
.. 
%prep 
echo %{buildroot} 
echo $RPM_BUILD_ROOT 

, 나는 /usr/lib/rpm/macros에 정의 된 결과를 얻을. %buildroot~/.rpmmacros에 정의하면 그 결과가 표시됩니다.

2 : rpm 패키지를 설치할 때 대상을 어떻게 제어합니까? 예 : rpm -ivh xxx.rpm, 파일을 설치할 위치는?

답변

5

서브 디렉토리는 %install 또는 어디서나 만들 수 있습니다.

예 : 모든 파일을 /opt/mypkg/에 설치하려고하지만 설정 파일 /etc/mypkg.conf도 필요합니다. %install 섹션 당신이 그렇게 :

mkdir -p %{buildroot}/opt/mypkg 
mkdir -p %{buildroot}/etc 

그래서 당신은 대상의 /의 동등 %{buildroot}으로 설치하려는 트리, 모두를 다시 만들 수 있습니다.

+0

대단히 감사합니다! 설치 디렉토리는 우리가 % install root 섹션에서 설치 한 디렉토리와 동일해야한다. 단, rpm은 % {buildroot}가 무엇이든 관계없이 % {buildroot}를 /로 대체 할 것이다. 내 첫 번째 질문은 어떻습니까? my.spec 파일에서 % {buildroot}의 값을 제어하는 ​​방법은 무엇입니까? 가치 또는 BuildRoot가 쓸모없는 것 같습니다? – zhihuifan

+3

'rpmbuild --buildroot = '/ path/to/your/buildroot /''가 작동해야합니다. 죄송합니다. 두 가지 질문이있었습니다. –

+0

'BuildRoot' 이상을 제어하려면 [이 질문] (http://stackoverflow.com/questions/2971391/how-to-set-the-build-area-for-rpmbuild-per-invocation)을 참조하십시오.). –