2014-06-23 1 views
0

centos 6.4에서 생성 된 바이너리 패키지에서 바이너리 rpm 파일을 만들고 내 빌드 시스템 중 하나에서 알 수 있듯이 ${buildroot}이 자동으로 생성되었으므로이를 어떻게 달성 할 수 있는지 알고 싶습니다.

샘플 wget.spec은 아래와 같습니다. https://gist.github.com/larrycai/1ffe134bce1860f1cf87

%install 
tar xf ~/wget.tar.gz -C %{buildroot}/ 

%files 
%defattr(-,root,root) 
/usr/bin/wget 

나는 그것이 rpmbuild -bb wget.spec를 사용하여 빌드 할 때 wget.tar.gztar -zcvf ~/wget.tar.gz /usr/bin/wget

만들 수 있습니다, 나는 라인 mkdir /home/larry/rpmbuild/BUILDROOT/wget-1.12-1.x86_64이 자동으로 실행됩니다 왜

+ rpmbuild -bb wget.spec 
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.VNDZg4 
+ umask 022 
+ cd /home/larry/rpmbuild/BUILD 
+ LANG=C 
+ export LANG 
+ unset DISPLAY 
+ exit 0 
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.S8koPW 
+ umask 022 
+ cd /home/larry/rpmbuild/BUILD 
+ '[' /home/larry/rpmbuild/BUILDROOT/wget-1.12-1.x86_64 '!='/']' 
+ rm -rf /home/larry/rpmbuild/BUILDROOT/wget-1.12-1.x86_64 
++ dirname /home/larry/rpmbuild/BUILDROOT/wget-1.12-1.x86_64 
+ mkdir -p /home/larry/rpmbuild/BUILDROOT 
+ mkdir /home/larry/rpmbuild/BUILDROOT/wget-1.12-1.x86_64 
+ LANG=C 
+ export LANG 
+ unset DISPLAY 
+ tar xf /home/larry/wget.tar.gz -C /home/larry/rpmbuild/BUILDROOT/wget-1.12-1.x86_64/ 
+ /usr/lib/rpm/check-buildroot 
... (it is successful) 

가 궁금있어 세부 사양 내 요점입니다.

스크립트가 있습니까? 아니면 rpmmacros가 활성화되어 있습니까?

답변

1

주된 이유는 빌드 머신 redhat-rpm-config 패키지, 우리는이 패키지를 설치하거나 ~/.rpmmacros

에이 매크로를 넣을 수 있습니다 /usr/lib/rpm/redhat/macros

%__spec_install_pre %{___build_pre}\ 
    [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\ 
    mkdir -p `dirname "$RPM_BUILD_ROOT"`\ 
    mkdir "$RPM_BUILD_ROOT"\ 
%{nil} 

에서이 매크로 설정은

아래의 세부 목록을 설치하다

나는 rpmbuild --showrc 명령을 실행하여 찾을 수 있는데 mkdir 코드 세그먼트가 있다는 것을 알 수 있으므로 sp가 있는지 확인하기 시작합니다. ecial 패키지가 설치됩니다.