9 users arch-linux d-bus systemd
我已经设置了 systemd 以便使用systemctl start user@me
将按照我的预期启动我的用户服务,但是我的 dbus 不会去(我需要 PulseAudio)。
有什么方法可以检查 dbus 或 systemd 以找出我做错了什么?
在这一点上,我没有想法可以尝试。请让我知道是否还有其他我可以提供的可能相关的信息。
附加信息/解决尝试
我使用的是 Arch Linux、systemd 204-1 和 dbus 1.6.10-1
通过启动用户 systemd# systemctl start user@me
给了我这个:
??systemd???(sd-pam)
? ??mpd???5*[{mpd}]
? ??pulseaudio???gconf-helper
? ??2*[{pulseaudio}]
Run Code Online (Sandbox Code Playgroud)
systemd --user &
当我的用户生成时手动启动:
??bash???pstree
? ??systemd???2*[dbus-daemon]
? ??dbus-launch <<< X only
? ??gconfd-2 <<< X only
? ??mpd???5*[{mpd}]
? ??pulseaudio???gconf-helper
? ??2*[{pulseaudio}]
Run Code Online (Sandbox Code Playgroud)
尽管我确实启用了我的用户 dbus.service,但如果我不在 X 中,则会出现以下错误:
Failed to open private bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Failed to open private bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Run Code Online (Sandbox Code Playgroud)
相关链接:
前两个提到了 dbus 的问题,但在链接 2 中,它说该问题已在 dbus-1.6.9 中修复,所以我认为问题在于我的实现而不是这个错误。
我使用了链接 2 和 3 中的示例用户服务。
如果DBUS_SESSION_BUS_ADDRESS
未为尝试使用 D-Bus 的进程设置该选项,则默认情况下该进程将尝试调用 dbus-launch,并选择--autolaunch
启动新会话总线或在 X 显示器或文件中查找现有总线地址在~/.dbus/session-bus/
。
当 dbus 不与 Xorg 一起使用时,与 $DISPLAY 使用不同服务器的方式相同,您可以设置此环境变量以告诉 dbus 使用哪个总线会话:
export DBUS_SESSION_BUS_ADDRESS=""
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请阅读http://dbus.freedesktop.org/doc/dbus-launch.1.html