无需安装即可构建和运行 SRPM 的有效方法有哪些?

无需安装即可构建和运行 SRPM 的有效方法有哪些?

我使用 Fedora 31,从事软件开发。我需要在许多方面使用代码来源RPM 包的时间相对较短。因此,我想简单地构建包,但大多数时候并不实际执行“安装”步骤。

有没有办法使用 RPM yum 或 DNF 来做到这一点?为了澄清,我想按照规范文件中指定的方式构建项目,以便运行二进制文件,但不是“安装”它;也就是说,我不希望将构建的文件实际复制到系统的文件系统结构中。

答案1

构建 RPM 不应将任何生成的二进制文件安装到您的系统上(至少我从未使用过观察到这种行为rpmbuild)。尽管它通常需要安装 SRPM 以及构建包所需的任何构建依赖项。

如果您的目的是避免将 SRPM 软件包安装到系统中来获取每个项目的信息SOURCESSPEC我建议mock来自 RPM 人员。它应该可以在主要的 Fedora 存储库中找到:dnf install mock

mockrpmbuild是一个利用 chroot 直接从 SRPM 构建 RPM 的包装器。这样做的好处是不必在主系统上安装 SRPM 或任何构建依赖项,因为它们安装在 chroot 内。

它还可以直接从本地目录或源代码管理构建 SRPM。

答案2

%install构建时的步骤实际上rpm并不安装系统上的二进制文件,它会将二进制文件安装在 RPM_BUILD_ROOT 中,这只是 rpm 构建步骤之一。

您的工作流程可能如下所示:

  • rpm -i *.src.rpm:安装源rpm。这只会解压 src.rpm 并将源文件、规范文件等放在 .rpm 下~/rpmbuild
  • 然后您可以cd ~/rpmbuild/SPEC/在哪里找到规范文件来构建rpm文件。
  • [可选]您可以对源代码、规范文件等进行一些修改
  • 现在rpm使用构建包rpmbuild -ba the.spec

这里有更详细的解释:https://blog.packagecloud.io/eng/2015/04/20/working-with-source-rpms/

笔记:如果你只是想重建一个源rpm,而不做任何改变,你可以随时尝试rpmbuild --rebuild the.src.rpm

相关内容