RPMBUILD:可以在安装时使用RPM配置文件的可移植性

时间:2012-12-04 11:03:20

标签: rpm rpmbuild rpm-spec

根据我的要求,所有服务器的rpm都可能相同,但只有一个配置文件根据服务器环境(如生产,登台,测试等)进行更改。 我有所有服务器的配置文件包但我不想在spec文件中硬编码或者不能为所有server创建不同的rpm。可以在客户端上安装rpm时指定配置文件的名称侧。

2 个答案:

答案 0 :(得分:0)

可能重复this one所以我会从那里复制我的答案......


我认为没有本土方式;我会按你所记录的那样做%post

但是,我会这样做(类似于我为工作开发的内部包而做的事情):

  1. 三个单独的文件/etc/name.conf-developer/etc/name.conf-live
  2. 让所有三个包提供虚拟包,例如name-config
  3. 主程序包需要name-config
    • 这将使rpmyum或任何需要在同一交易中安装至少一个的任何内容
  4. 让所有三个包相互冲突
  5. 将每个配置包的%post(可能还有%verify)符号链接/etc/name.conf放到正确的配置中
    • 这也有助于向用户显示正在发生的事情
  6. 缺点:

    1. 这有点hackish
    2. rpm --whatprovides /etc/name.conf会说它不属于任何软件包

答案 1 :(得分:0)

亚伦的答案是一个很好的方法。另一种选择是使用bash if语句在%post部分的配置文件上根据主机名(例如* prod)运行sed命令。这将允许您根据环境替换特定变量。显然这是一个高级示例,因为我不知道您的配置设置是什么样的。不幸的是,这是坏包装的样子的一个例子,因为其他人很难管理下线。我建议您将所有配置文件移出RPM,然后开始使用SaltChefPuppet,因为这是他们要完成的任务。