我在构建日志中收到以下内容:
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
参数,但遗憾的是我们的。
答案 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>
最后,--noclean
有rpmbuild
个选项 - 但在我的情况下(RPM version 4.11.3
)它没有用。