rpmbuild%清除阶段而不删除文件

时间:2012-12-11 23:29:36

标签: rpm 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删除构建目录中的所有文件,因为在构建RPM之后我需要它们用于其他内容。我可以覆盖此行为吗?

我读到某些版本的RPM支持--noclean参数,但遗憾的是我们的。

2 个答案:

答案 0 :(得分:9)

原来我只需要在spec文件中提供我自己的%clean指令,并将其留空以覆盖默认值。出于某种原因,我没想到会这样。 ;)

定义可以条件化%Clean%阶段,以便实现与--noclean相同的效果。

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

使用rpmbuild --define 'noclean 1'调用以禁用清洁。

答案 1 :(得分:3)

对于来自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>

最后,--nocleanrpmbuild个选项 - 但在我的情况下(RPM version 4.11.3)它没有用。