使用源目录而不是tarball构建RPM


14

在我的组织中,我们使用RPM将所有软件部署到生产机器上。我们的构建过程(自动进行)包括从版本控制中检出源代码,将源代码目录打包,然后使用该源代码tarball运行rpmbuild。rpmbuild仅使用该tarball解压缩源以对其进行处理。因此,看起来整个去皮和去皮业务只是构建过程中不必要的额外步骤。有没有一种方法可以仅在spec文件中指定源目录,从而避免那些额外的步骤?

Answers:


5

是的,你可以这样做。不列出任何Sources。在本%prep节中,不要使用%setup宏(它会解压缩源代码);而是检查源。

请注意,如果执行此操作,则将无法构建SRPM。


做到了。我只需要修改构建过程即可将内容检出到rpm BUILD目录。谢谢!
艾迪(Eddie)

10

这个问题有点老了,但是如果其他人在搜索中找到了这个问题,那么有一个更正确的方法来做到这一点,这也允许创建SRPM。

在准备部分中,而不是使用setup宏,您应该自己输入所需的操作,即将源目录从SOURCES复制到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,g-w,o-w .

%patch1 -p1 -b .cert-config
%patch2

%build
cd myapp-%{version}

%install
cd myapp-%{version}

应该%{_topdir}/SOURCES%{_sourcedir}?而且%{_topdir}/BUILD可能是%{buildroot}?(顺便说一句,因为你正在试图增加额外的文件来覆盖那些从提取相似,但是,不同的情况下%setup,Fedora的文档推荐使用%{SOURCE2}等- fedoraproject.org/wiki/Packaging:RPM_Source_Dir
IBBoard
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.