如何使用相同的路径为不同的env创建RPM子包?

时间:2012-10-02 18:32:05

标签: packaging rpm rpmbuild rpm-spec

我想使用rpm为不同的环境(实时,测试,开发人员)构建子包,但对于相同的文件,所以有一个名为name-config-live的包,一个名为name-config-testing,一个名为name-config-developer,并且在它们中具有相同的路径,但每个路径都具有与其命名的环境相对应的配置。 作为一个例子

让我们说在所有环境中我都有一个名为/etc/name.conf的文件,在测试时我希望它包含“1”,开发“2”和实时“3”。是否可以在同一规范中执行此操作,因为子包生成最后不是按我输入的顺序发生的。 (并希望没有%post -n)

我尝试使用BuildRoot,但似乎这是一个全局属性

1 个答案:

答案 0 :(得分:3)

我认为没有本土方式;我会按你所记录的那样做%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会说它不属于任何软件包