2017-11-28 24 views
1

.specファイルを使用してrpmbuild(4.11.3)を実行しようとしていますが、builddirectoryを削除します。rpmbuildはビルドディレクトリのファイルを必要なだけ削除しませんRPMが構築された後の他の事柄私は-biオプションで試してみましたが、それは仕事をしなかった、それはビルドディレクトリを削除します。ここでrpmbuild .specファイルを使用してビルドディレクトリを削除します

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 

それは/テスト/新しい/ DEST内のすべてのファイルを削除します。ビルドファイルを削除せずにrpmファイルを作成する方法。

+0

スペックファイルに1つまたは複数の 'Source'ディレクティブを使用していない理由はありますか? –

答えて

1

あなたは追加することができます。

%define __spec_install_pre /bin/true 

をあなたのspecファイルの上に。

しかし、私はあなたのSPECが既にハックでいっぱいであり、これは汚れたハックの別の層を追加するので、この答えを提供することは本当に残念です。この質問の代わりに、むしろ定期的にビルドルートをクリーンアップすることで達成したいことをどのようにするかを尋ねるべきです。

EDIT:あなたはとしてそれを定義した場合ので、

__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は2つの方法で定義でき、RPMのバージョンによって異なります。私はそれをあなたに任せます:)

関連する問題