2012-12-11 8 views
8

मैं अपने निर्माण लॉग में निम्न हो रही निकाले बिना स्वच्छ चरण:rpmbuild% फ़ाइलों

Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.CgE2Qn 
+ umask 022 
+ cd /export/home/svn_checkouts/*snip*/Output/release/bin/packaging/BUILD 
+ /bin/rm -rf /export/home/svn_checkouts/*snip*/Output/release/bin 
+ exit 0 

मैं rpmbuild से बचने के लिए अपने निर्माण निर्देशिका में सभी फ़ाइलों को हटाने के रूप में मैं उनके पीछे अन्य बातों के लिए की जरूरत करना चाहते हैं आरपीएम बनाया गया है। क्या मैं इस व्यवहार को ओवरराइड कर सकता हूं?

मैंने पढ़ा कि आरपीएम के कुछ संस्करण --noclean तर्क का समर्थन करते हैं, लेकिन दुर्भाग्यवश हमारे नहीं हैं।

उत्तर

9

बाहर निकलता है मुझे बस अपने स्वयं के %clean spec फ़ाइल में निर्देश प्रदान करने की आवश्यकता है और डिफ़ॉल्ट को ओवरराइड करने के लिए इसे खाली छोड़ दें। किसी कारण से मैंने काम करने की उम्मीद नहीं की थी। ;)

एक परिभाषा % स्वच्छ% चरण को सशर्त कर सकती है ताकि --noclean के समान प्रभाव प्राप्त किया जा सके।

%Clean 
%if "%{noclean}" == "" 
    rm -rf $RPM_BUILD_ROOT 
%endif 

सफाई निष्क्रिय करने के लिए rpmbuild --define 'noclean 1' साथ कहा जाता है।

+0

हां, यह RPM संस्करण 4.11.1 के साथ काम नहीं करता है: यदि noclean अपरिभाषित है, तो% {noclean} को खाली स्ट्रिंग के बजाय% {n o c l e a n} (रिक्त स्थान के बिना) तक बढ़ा दिया जाता है। – Bulletmagnet

2

-file spec से निर्माण के लिए, rpmbuild-bi का विकल्प है। यह $RPM_BUILD_ROOT जैसा है; यह %clean नहीं है।

:

-bi  build through %install (%prep, %build, then install) from <specfile> 

(rpmbuild --help)


SRPM से निर्माण के लिए (एक स्रोत RPM पैकेज yumdownloader आप उन मिल जाएगा), वहाँ भी --recompile विकल्प है

--rebuild build binary package from <source package> --recompile build through %install (%prep, %build, then install) from <source package> 

अंत में, rpmbuild के लिए --noclean विकल्प है - लेकिन मेरे मामले (RPM version 4.11.3) में यह काम नहीं किया।

संबंधित मुद्दे