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
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):
- Three separate files
/etc/name.conf-developer
, /etc/name.conf-live
, etc.
- Have all three packages provide a virtual package, e.g.
name-config
- Have main package require
name-config
- This will make
rpm
, yum
, or whatever require at least one be installed in the same transaction
- Have all three packages conflict with each other
- 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:
- It's a little hackish
rpm --whatprovides /etc/name.conf
will say it is not owned by any package