11

我在构建日志中得到以下信息:

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论点,但不幸的是我们的版本不支持。

4

2 回答 2

11

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

定义可以对%Clean%--noclean阶段进行条件化,从而可以实现相同的效果。

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

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

于 2012-12-11T23:39:06.733 回答
3

对于spec-file构建,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>

最后,有一个--noclean选项rpmbuild- 但在我的情况下 ( RPM version 4.11.3) 它不起作用。

于 2016-04-11T14:24:08.793 回答