I'm trying to run systemd user mode on CentOS 7.0 server (no X11 installed).
e.g.
systemctl --user start hw.service
it reacts:
Failed to get D-Bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
If I add
export DISPLAY=:0
and run again, it reports:
Failed to get D-Bus connection: /bin/dbus-launch terminated abnormally without any error message
Can anyone shed light on this? btw, systemctl –version reports:
systemd 208
+PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ
Thanks!
Best Answer
CentOS doesn't support "systemd --user". Their packages outright remove that part of systemd. (Notice how there's no
user@.service
, among other things.)That said, the libdbus' autolaunch error message is misleading, and your
$DISPLAY
is wrong.The error message really says "[systemctl couldn't reach systemd at the private address, so it asked libdbus to use the session bus, but] there was no session bus address explicitly set, so libdbus tried to autolaunch one, but couldn't do that either".
Now, if you were trying to use D-Bus session autolaunch, then just setting $DISPLAY wouldn't be enough – it would expect an X11 server like Xorg to already be running at :1 or such (in which case, $DISPLAY would already be set).
But
systemctl --user
doesn't really want autolaunch – it expects to find systemd at a specific location,/run/user/$UID/bus
and/run/user/$UID/systemd/private
– so launching a new bus would be useless as it wouldn't have systemd there. So recent versions no longer use autolaunch (or libdbus for that matter).