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

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

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

原因

我想创建一个包A这取决于较新版本的(无法在系统上全局安装)。

我喜欢构建新版本的并安装构建工具-devel其放入隔离环境中,以提供构建所需的所有必要文件A

解决方案

  • 有什么工具可以做到这一点吗?
  • 如果不是,那么当我尝试这样做时我应该注意什么chroot
  • 这是不是一个不好的做法?

答案1

是的,该工具名为mock它在 EPEL 中。

典型用法:

rpmbuild -bs mypackage.spec
mock -r epel-6-x86_64 mypackage-0.1-1.src.rpm

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

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

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

并非巧合的是,kojiRed Hat 使用的构建服务器会调用mock来构建每个单独的包。如果你必须构建一个很多由于一直以来都在使用软件包,因此可能值得研究设置一个koji构建服务器。

答案2

我认为尝试在生产主机上构建软件包是一种不好的做法,尝试在没有 root 权限的情况下执行此操作比启动自己的构建机器更复杂。我通常会这样做。

  1. 在您的台式机/笔记本电脑上安装 VirtualBox 或类似工具
  2. 创建生产中使用的操作系统的 32/64 VM
  3. 安装常用的mock、rpmbuild等工具
  4. 在你的虚拟机上为软件包创建 RPM 以及两个架构的任何其他依赖项
  5. 测试后将 RPM 推送到你的内部仓库,以便分发到你的服务器
  6. 再次测试以确保引入了正确的依赖项
  7. 通过您的配置管理发布。

答案3

您想使用 mock。它允许您在 chroot 中构建 rpm

https://fedorahosted.org/mock/

相关内容