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


10

是否有工具可以将RPM .spec的依赖项安装到隔离的环境中?我不会在系统上全局安装此类依赖项,因为我没有root特权,所以无法安装。

原因

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

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

解决方案

  • 有什么工具可以做到这一点吗?
  • 如果没有,那么我该怎么办chroot
  • 这是一个不好的做法吗?

Answers:


8

是的,该工具已被调用mock,位于EPEL中。

典型用法:

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

实际上,这实际上是构建RPM的首选方法,这恰恰是因为它将流程与系统隔离开来,从而不会产生意想不到的依赖关系。

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

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

并非巧合的是,koji红帽使用的构建服务器使用调用mock来构建每个单独的软件包。如果您必须一直构建大量软件包,那么值得考虑安装koji构建服务器。


谢谢迈克尔。这听起来非常好,我很高兴我的问题没有我想象的那么愚蠢。;)
试试,最终

3

我认为尝试在生产主机上构建程序包是一种不好的做法,并且在没有root特权的情况下尝试进行构建比提起您自己的构建计算机要复杂得多。我通常会执行以下操作。

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

这将起作用。它比使用模拟更好?我认为模拟会更容易,但是我怀疑这两种方式几乎都是同一件事。
2013年

我对模拟没有任何问题,我相信几乎所有“如何制作rpm”文档都已安装。但是,如果没有root用户访问权限,我不确定OP将如何将其帐户添加到模拟组,安装模拟等。另外,拥有干净的构建VM有助于避免意外将依赖关系添加到程序包中。
拉敏

优点。我没有考虑到这一点。考虑到这一点,我认为这是正确的答案。
emory

@emory根据您的反馈,我澄清了为什么我认为构建VM总体上是更好的解决方案,我认为这是一个更好的答案。谢谢你劝我 :-)
拉明

@Ramin在我的情况下(在工作中)我只是用户。该系统是专用的构建系统,而且,如果该主机上的所有开发人员都具有root特权,则该框将在1周后无法启动。;)因此,使用像Mock这样的工具是完全正确的选择!如果可以自动化,则设置虚拟机也是一个好主意。我认为Vagrant(我尚未测试过)才是正确的工具。
试试,最终

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.