How to create RPM subpackages using the same paths

2019-05-07 10:40发布

I would like to use a rpm to build subpackages for different environments (live,testing,developer) but for the same files, so having a package called name-config-live, one called name-config-testing and one called name-config-developer and in them to have the same paths but each with the configs corresponding to the environment it's named after. as an example

let's say on all environments I have a file called /etc/name.conf and on testing I want it to contain "1", on development "2" and on live "3". Is it possible to do this in the same spec since the subpackage generation only happens last not in the order I enter it. ( and hopefully not with %post -n )

I tried using BuildRoot but it seems that's a global attribute

1条回答
Melony?
2楼-- · 2019-05-07 11:06

I don't think there's a native way; I would do a %post like you had noted.

However, I would do this (similar to something I do with an internal-only package I develop for work):

  1. Three separate files /etc/name.conf-developer, /etc/name.conf-live, etc.
  2. Have all three packages provide a virtual package, e.g. name-config
  3. Have main package require name-config
    • This will make rpm, yum, or whatever require at least one be installed in the same transaction
  4. Have all three packages conflict with each other
  5. Have each config package's %post (and possibly %verify) symlink /etc/name.conf to the proper config
    • This also helps show the user what is happening

Cons:

  1. It's a little hackish
  2. rpm --whatprovides /etc/name.conf will say it is not owned by any package
查看更多
登录 后发表回答