We want to stop systemd from being added to docker images, because of rpm requiring systemctl.

Adam Jackson ajax at redhat.com
Wed Apr 30 17:14:10 UTC 2014

On Wed, 2014-04-30 at 12:34 -0400, Chuck Anderson wrote:
> On Wed, Apr 30, 2014 at 10:28:56AM -0400, Adam Jackson wrote:
> > On Wed, 2014-04-30 at 16:05 +0200, Kalev Lember wrote:
> > > For example, when a package bar has a postinstall script that does:
> > > 
> > >     systemctl enable bar.service >/dev/null 2>&1 || :
> > > 
> > > ... but if systemctl gets installed _after_ foo in the same transaction,
> > > then the systemctl command never runs and service stays disabled.
> > 
> > If you are right, this is an argument for rpm collections, which we've
> > had for ages now and should really start using.
> What are "rpm collections"

Scriptlets bound to a directory instead of a package's %post.

> and how do they relate to "software collections"?

They don't.

> How does this solve the package installation order without dependencies?

Since the collection action runs for any transaction element that
affects the collection directory, you just need to pile up touch files
that say to enable a service, and the action will eventually run once
systemctl exists.  (Roughly speaking; probably we could make it cleaner
than that.  Collections seem only to implement "every package" hooks
atm, but for things like fonts it might be reasonable to just run the
hook analogously to %posttrans rather than analogously to %post.)

> It is hard to find anything useful by searching for "rpm collections".

Yeah, they're not well documented yet.  Luckily I was able to track down
a copy of the rpm source so I could read how it works.

The other downside is they're new in rpm 4.9, and RHEL6 only has 4.8, so
there's a spec portability problem for EPEL6.

- ajax

More information about the devel mailing list