RedHat:可以在一种模拟环境中安装软件包来构buildRPMs

有没有一种工具可以将RPM .spec的依赖项安装到一个孤立的环境中? 我不会在系统上全局安装这样的依赖关系,而且我也无法这样做,因为我没有root权限。

原因

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

我喜欢构build更新版本的B ,让构build工具安装B – 将其-devel到一个孤立的环境中,为构buildA提供所有必需的文件。

解决scheme

  • 有没有什么工具可以做到这一点?
  • 如果不是的话,当试图用chroot来做这件事的时候我该怎么处理呢?
  • 这会是一个坏习惯吗?

是的,这个工具被称为mock ,它在EPEL中。

典型用法:

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

实际上,这是构buildRPM的首选方法,正是因为它将进程与系统隔离开来,以防止出现意外的依赖关系。

您可以修改/etc/mock的文件,让它将您自己的软件包,私人回购等拉入,或者查看文档以获取有关如何手动将软件包添加到mock chroot环境的信息。

请注意,用户应该被添加到mock组允许使用mock

不巧的是,红帽使用调用的koji构build服务器mock构build每个单独的包。 如果你不得不一直build立很多软件包,那么build立一个koji构build服务器是值得的。

我认为尝试在生产主机上构build软件包是不好的做法,试图在没有root权限的情况下执行它比创build自己的构build机器要复杂得多。 我通常做的是以下。

  1. 在桌面/笔记本电脑上安装VirtualBox或类似的工具
  2. 创build您在生产中使用的OS的32/64个虚拟机
  3. 安装通常的mock,rpmbuild等工具
  4. 创build软件包的RPM以及为您的VM上的两个arch创build任何额外的折扣
  5. testing之后,将RPM插入到您的内部回购站中,以便分发到您的服务器
  6. 再次testing以确保正确的依赖关系被拉入
  7. 通过您的configurationpipe理释放。

你想使用模拟。 它允许你在chroot中build立rpms

https://fedorahosted.org/mock/