为什么构建 RPM 的过程如此孤立?

为什么构建 RPM 的过程如此孤立?

我正在学习如何为我自己的软件包创建 RPM。通常,我可以在登录自己的帐户时执行所有操作,但有关制作 RPM 的说明似乎总是希望您使用其他帐户。

我遵循的一个教程使用了rpm-buildrpmdevtools。例如rpmdev-setuptreerpmbuild/在我的主目录中创建一个目录(不是我期望的当前目录)。说明还建议我创建一个单独的build帐户。这看起来有些过分,并且使得管理这个特殊帐户和我正在开发的帐户之间的文件变得困难。

官方Fedora 文档使用fedora-packagerfedora-review包,然后继续让您将自己添加到嘲笑团体。它再次建议:

您还可以创建一个单独的用户并将其用于进行 RPM 开发。确保用户属于嘲笑组并输入fedora-packager-setup命令。

这两条说明都鼓励在单独的帐户上构建 RPM。

为什么是这样?为了方便起见,我的下意识反应是尝试以某种方式解决这个问题。从普通帐户创建 RPM 时可能会遇到哪些问题?

答案1

打包时的一般原则是,您不应该对打包配置中未声明的系统做出任何假设。这包括很多东西:构建所需的包、执行所需的包、所需的帐户(用户或组)、所需的权限等。否则,您可能会发现您编写的规范文件可能构建在您的雪花上系统,但不是在干净的环境中。即使它确实构建了,也可能无法安装。即使安装了,也可能无法按预期工作。

这样,发行版就可以使用自动构建系统,维护人员只需上传打包配置,构建系统就会完成剩下的所有工作。当然,以这种方式构建的软件包更加可靠。因为它们所需的一切都在包装中指定,所以安装它们不太可能破坏用户的系统。

答案2

这两条说明都鼓励在单独的帐户上构建 RPM。

我不会以这种方式阅读 Fedora 文档;对我来说,它说的是如果你想,您可以使用单独的帐户来完成打包工作,并且它解释了您需要做什么才能使其正常工作。它没有说你必须这样做,甚至没有鼓励你这样做。

我使用我的主帐户进行包装工作。不过,我确实通过运行mock构建(当然,在 Koji 或我们的内部同等版本上构建)来确保我的构建要求是完整的。

答案3

您可以告诉 rpmbuild 文件正在使用的位置,--define '_builddir <Your_Root>' 您不需要使用不同的帐户运行它,尽管我认为这是一个很好的做法。希望这有帮助。埃兰。

相关内容