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

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

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

最佳答案

我不认为有一种本地方式;我会像你提到的那样做一个 %post

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

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

  • 缺点:
  • 有点hackish
  • rpm --whatprovides /etc/name.conf 会说它不属于任何包
  • 关于packaging - 如何为不同的环境使用相同的路径创建 RPM 子包?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12696131/

    10-11 20:30
    查看更多