2017-11-28 16 views
1

.spec 파일을 사용하여 rpmbuild (4.11.3)를 시도하고 있는데, builddirectory를 삭제합니다. rpmbuild를 사용하여 빌드 디렉토리의 파일을 삭제해야합니다. RPM이 만들어진 후 다른 것들. -bi 옵션으로 시도했지만 작업을하지 못했습니다. 빌드 디렉토리가 삭제됩니다. 여기.spec 파일을 사용하는 rpmbuild는 빌드 디렉토리를 삭제합니다.

spec 화일 :

Name: newfile 
Version: 1.0 
Release: 1%{?dist} 
AutoReqProv: no 
Prereq: /bin/chmod 
Prereq: /bin/chown 
Summary: Testing 
%description 
TBD 
%install 

mkdir -p $RPM_BUILD_ROOT/test/opb 

%files -f testingfiles.files 
%defattr(-,root,root,755) 
%dir /test/opb 
%dir /test/opb 
%dir /test/opb/new 
%dir /test/opb/new1 
%dir /test/opb/new2 
%dir /test/opb/new2 

명령 :

/usr/bin/rpmbuild --define '_tmppath /var/tmp/rpmgen24431.d' --define '_topdir pkg/tst' -bi --buildroot /testing/new/dest pkg/tst/newfile.spec 

그것은 모든 파일을 삭제/테스트/새/이명 령 내부. 빌드 파일을 삭제하지 않고 rpm 파일을 만드는 방법.

+0

왜 spec 파일에서 하나 이상의'Source' 지시어를 사용하지 않는 이유가 있습니까? –

답변

1

당신은 추가 할 수 있습니다

%define __spec_install_pre /bin/true 

당신의 명세 파일의 상단에.

하지만 SPEC이 이미 해킹으로 가득차 있으며 더러운 해킹의 또 다른 계층을 추가함에 따라이 답변을 제공하는 것이 부끄럽습니다. 이 질문 대신에, 정기적으로 buildroot를 정리하여 달성하려는 작업을 수행하는 방법을 묻는 것이 좋습니다.

편집 : 당신이로 정의하면 너무

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

:

%{___build_pre} 
    mkdir -p `dirname "$RPM_BUILD_ROOT"` 
    mkdir "$RPM_BUILD_ROOT" 
%{nil} 

그것은 단지 buildroot을 삭제하지, 정확히 같은 동작합니다 __spec_install_pre는 다음과 같이 정의된다. multiline % define은 rpm의 버전에 따라 두 가지 방법으로 정의 할 수 있습니다. 나는 당신에게 맡길 것입니다 :