4

我想使用 rpm 为不同的环境(live、testing、developer)构建子包,但对于相同的文件,所以有一个名为 name-config-live 的包,一个名为 name-config-testing,一个名为 name-config -developer 并在其中具有相同的路径,但每个路径的配置都与其命名的环境相对应。举个例子

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

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

4

1 回答 1

3

我不认为有本地方式。我会%post像你所说的那样做。

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

  1. 三个单独的文件/etc/name.conf-developer/etc/name.conf-live等等。
  2. 让所有三个包都提供一个虚拟包,例如name-config
  3. 有主包需要name-config
    • 这将使rpm,yum或任何需要在同一事务中安装至少一个的
  4. 让所有三个包相互冲突
  5. 将每个配置包的%post(和可能的%verify)符号链接/etc/name.conf到正确的配置
    • 这也有助于向用户展示正在发生的事情

缺点:

  1. 这有点骇人听闻
  2. rpm --whatprovides /etc/name.conf会说它不属于任何包
于 2012-10-03T00:38:45.490 回答