使用源目录构buildRPM,而不是tarball

在我的组织中,我们使用RPM将所有软件部署到我们的生产机器上。 我们的构build过程(这是自动化的)包括从版本控制中检查源代码,将源代码目录打包,然后使用该源代码包运行rpmbuild。 rpmbuild只使用该压缩包解压缩源代码。 所以,看起来像整个taring和untaring业务只是在构build过程中不必要的额外步骤。 是否有一种方法只是在spec文件中指定源目录,避免这些额外的步骤?

是的,你可以做到这一点。 不要列出任何Source 。 在%prep部分不要使用%setupmacros(解压源); 相反,只是检查了来源。

请注意,如果您这样做,您将无法构buildSRPM。

这个问题有点老,但是如果其他人在search中find它,那么有一个更正确的方法来做到这一点,也允许创build一个SRPM。

在准备部分,不要使用安装macros,而应该自己输出你想做的事情,即将源目录从SOURCES复制到BUILD,而不是解压缩一个存档。 我发现你还必须在构build和安装部分的源代码目录中添加一个cd。

示例代码片段

 %prep # Don't use the setup macro anymore, replace it with typed-out commands #%setup -q -n myapp-%{version} cd %{_topdir}/BUILD rm -rf myapp-%{version} cp -rf %{_topdir}/SOURCES/myapp-%{version} . cd myapp-%{version} /usr/bin/chmod -Rf a+rX,u+w,gw,ow . %patch1 -p1 -b .cert-config %patch2 %build cd myapp-%{version} %install cd myapp-%{version}