“If the mountain won’t come to Muhammad then Muhammad must go to the mountain.”
Oddly, this proverb applies to systemd
as well. It’s rapidly making its way
to all the major distros. Love it, or hate it, it’s here to stay.
The thing that throws me off the most, is its intrusiveness. When you install systemd
,
it literally plows through the wall, and doesn’t bother with the door.
This is especially true if you are running an older Ubuntu, like 14.04. As packages
are rapidly adopting systemd
as a dependency, there’s a good chance that it will
surprise you with a visit. Sooner than you think.
I had a minimalistic Ubuntu Trusty environment, and upon updating
Java to 8u121
, systemd
joined the party as well, breaking SSH and some other
crucial services. It also drank all the beer. Java version 8u111
didn’t have
it as an indirect dependency.
Here’s how to prevent systemd
from ruining your party:
# create an APT config file
$ sudo vi /etc/apt/preferences.d/systemd
# paste this snippet and save -- make sure there's no indentation
Package: systemd
Pin: release *
Pin-Priority: -1
# at this point, the walls are reinforced and the beer is restocked
In a nutshell, by setting the Priority
to a negative number, APT installations
will skip the systemd
package, even if it is a dependency. Check out the
apt_preferences man page for more
info. I will probably revisit it in another post.
Alternatively, the same can be achieved with the --no-install-recommends
option for apt-get install
, when systemd
isn’t a direct dependency, but then you
might miss out on some valuable packages, like dbus
in my case.
You can broaden the match by putting an asterisk (*
) around the package name,
but in this case, I think it’s an overkill. You may want to install timedatectl
without installing systemd
, which is part of the systemd-services
package in Trusty. With limiting our match to systemd
only, the
systemd-services
package can happily bring in timedatectl
without reaping havoc.
Done.