我正在尝试在 CentOS 7.0 服务器(未安装 X11)上运行 systemd 用户模式。例如
systemctl --user start hw.service
它的反应是:
Failed to get D-Bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
如果我添加
export DISPLAY=:0
再次运行,报告:
Failed to get D-Bus connection: /bin/dbus-launch terminated abnormally without any error message
有人可以解释一下吗?顺便说一句,systemctl --version 报告:
systemd 208
+PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ
谢谢!
答案1
CentOS 不支持“systemd --user”。[email protected]
他们的软件包直接删除了 systemd 的这一部分。(请注意,除其他外,没有。)
也就是说,libdbus 的自动启动错误消息具有误导性,并且您的信息$DISPLAY
是错误的。
错误消息实际上是说“[systemctl 无法通过私有地址访问 systemd,因此它要求 libdbus 使用会话总线,但是] 没有明确设置会话总线地址,因此 libdbus 尝试自动启动一个,但也无法做到这一点”。
现在,如果你是尝试使用 D-Bus 会话自动启动,那么仅设置 $DISPLAY 是不够的 - 它会期望像 Xorg 这样的 X11 服务器已经在 :1 或类似的位置运行(在这种情况下,$DISPLAY 已经设置好了)。
但systemctl --user
实际上并不需要自动启动——它希望在特定位置找到 systemd,/run/user/$UID/bus
因此/run/user/$UID/systemd/private
启动新总线是无用的,因为那里没有 systemd。因此最新版本不再使用自动启动(或 libdbus)。