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

Daniel J Walsh dwalsh at redhat.com
Wed Apr 30 14:24:35 UTC 2014

On 04/30/2014 10:05 AM, Kalev Lember wrote:
> On 04/29/2014 12:31 PM, Lennart Poettering wrote:
>> On Mon, 28.04.14 15:11, Toshio Kuratomi (a.badger at gmail.com) wrote:
>>> On Apr 28, 2014 5:01 PM, "Daniel J Walsh" <dwalsh at redhat.com> wrote:
>>>> The problem  is lots of services require systemd because they ship a
>>>> unit file and want systemctl reload to happen.
>>> Would removing the requires on systemd and doing:
>>> /usr/bin/systemctl reload ||:
>>> Work for these cases?
>> Note that all the invocations of systemctl done by the systemd rpm
>> macros are suffixed with ">/dev/null 2>&1 || :", as it is customary for
>> rpm scriplets. Hence there's little to do really, except dropping the
>> deps, and leaving everything else in place...
> I suspect just dropping the deps would break initial installations, e.g.
> anaconda / livecd-creator. RPM uses the deps to order the transaction so
> that systemd gets installed first, and the packages that ship service
> files get installed later. Without the deps, rpm wouldn't know the order
> in which it has to run the transaction.
> 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.
Well you are never supposed to do this.  You are only supposed to do a
systemctl reload bar in a post install.  Any package that does do an
enable, should require systemd, as they are probably not candidates to
run in a container.

More information about the devel mailing list