Skip to content

A systemd drop-in cannot remove an ordering dependency

scope: generic · severity: trap · confidence: proven · subsystem: userspace

After= / Before= / Wants= / Requires= can only be ADDED by a drop-in. The empty-assignment reset that works for most list settings does not remove ordering.

The drop-in installs. systemctl daemon-reload is clean. The file is on disk. The dependency is still there.

Measured: a systemd-user-sessions.service.d/ drop-in with After= followed by a shorter list was installed to unhook the greeter from network.target. dropin=PRESENT, no error anywhere — and systemctl show systemd-user-sessions.service -p After still listed network.target. The boot number then moved by nothing, which reads exactly like “the theory was wrong” rather than “the change never happened”.

Terminal window
# the control. Not optional -- the drop-in existing proves nothing.
systemctl show <unit> -p After --value | tr ' ' '\n' | grep -c '^<dep>$'

Removing ordering needs a full unit override in /etc/systemd/system/, which forks an upstream unit — price that maintenance cost before assuming the fix is cheap.

Related: shipped-configuration-is-not-running-configuration, every-test-needs-a-positive-control.