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

Edd*_*die 14 rpm

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

tdi*_*mig 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}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ner 6

是的,你可以这样做。不要列出任何Sources。在该%prep部分中不要使用%setup宏(解压源代码);相反,只需查看来源。

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