RedHat:是否可以在一种模拟环境中安装软件包来构建 RPM

try*_*lly 10 linux chroot rpm rhel6

是否有允许将 RPM .spec 的依赖项安装到隔离环境中的工具?我不会在系统上全局安装此类依赖项,而且我无法这样做,因为我没有 root 权限。

原因

我想构建一个依赖于较新版本B(不能在系统上全局安装)的包A。

我想建立的新版本,让构建工具安装-devel它变成一个孤立的环境中提供所有必要的文件的生成一个

解决方案

  • 有没有工具可以做到这一点?
  • 如果没有,在尝试使用 say 执行此操作时我应该注意什么chroot
  • 这会是一个不好的做法吗?

Mic*_*ton 8

是的,该工具被调用mock并且它在 EPEL 中。

典型用法:

rpmbuild -bs mypackage.spec
mock -r epel-6-x86_64 mypackage-0.1-1.src.rpm
Run Code Online (Sandbox Code Playgroud)

这实际上是构建 RPM 的首选方式,正是因为它将进程与系统隔离开来,从而不会引入意外的依赖项。

您可以修改其中的文件/etc/mock以将其拉入您自己的包、私有存储库等,或查看文档以获取有关如何mock手动将包添加到chroot 环境的信息。

请注意,应将用户添加到mock允许使用的组中mock

并非巧合的是koji,Red Hat 使用的构建服务器调用mock来构建每个单独的包。如果您必须一直构建大量软件包,则可能值得考虑设置koji构建服务器。