2013-02-26 79 views
0

我们正在切换到使用puppet进行基于Linux的系统的配置管理。我们有几个包含自定义二进制安装程序的第三方软件包(认为是JDK),并且正在使用RPM将它们构建到仅限本地的非分布式软件包中。一个麻烦的软件包有一个安装过程,它需要以下内容:a)解压缩二进制包到安装目录x。 b)运行“安装程序”,提示许可验收,然后修改/嵌入安装目录路径到许多后续安装目录中的脚本从第三方二进制软件包构建RPM

我在定义一个spec文件来安装这个软件包时遇到了问题。对于初学者来说,在%install中,我处理步骤a,然后从步骤b运行安装程序。按预期方式将该软件包安装到$ RPM_BUILD_ROOT中。然而,包脚本都嵌入了$ RPM_BUILD_ROOT /,而不是嵌入安装目录的脚本。有没有办法运行这个安装程序,就像它在chroot环境或其他一些替代方法一样?任何帮助赞赏。

+0

[mach](http://www.howtoforge.com/building-rpm-packages-in-a-chroot-environment-using-mach)可能是你正在寻找的。 – 2013-02-26 09:45:12

+0

@ AaronD.Marasco,谢谢马赫看起来像一个很好的前景。我们仅限于标准的CentOs yum软件仓库,我没有看到它,但我可以解决这个问题。我会给你道具,但我的名声禁止它;-)。 – Andy 2013-02-26 19:14:39

回答

1

在Fedora下(我怀疑RHEL/CentOS)有mock正是你描述的任务类型。它用于构建软件包,但“填充chroot”部分应该很容易(错误)用来创建所需的环境。