dbus和systemd / user遇到问题


8

我已经进行了系统设置,以便使用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}]

systemd --user &在用户产生时手动开始:

├─bash─┬─pstree
│      └─systemd─┬─2*[dbus-daemon]
│                ├─dbus-launch <<< X only
│                ├─gconfd-2    <<< X only
│                ├─mpd───5*[{mpd}]
│                └─pulseaudio─┬─gconf-helper
│                             └─2*[{pulseaudio}]

尽管我确实启用了用户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

相关链接:

  1. /superuser/476379/how-do-i-setup-a-systemd-service-to-be-started-by-a-non-root-user-as-a-user-daem
  2. https://github.com/sofar/user-session-units
  3. https://github.com/grawity/systemd-user-units

前两个提到了dbus的问题,但是在链接2上它说该问题已在dbus-1.6.9中修复,因此我认为问题出在我的实现上,而不是此错误。

我使用了链接2和3中的示例用户服务。

Answers:


2

如果DBUS_SESSION_BUS_ADDRESS未为尝试使用D-Bus的进程设置,则默认情况下,该进程将尝试调用dbus-launch,并带有--autolaunch启动新的会话总线或在X显示屏或文件中找到现有总线地址的选项。在~/.dbus/session-bus/

当Xbus不使用dbus时,与$ DISPLAY可以使用另一台服务器的方式相同,可以设置此环境变量以告诉dbus使用哪个总线会话:

export DBUS_SESSION_BUS_ADDRESS=""

有关更多信息,请阅读http://dbus.freedesktop.org/doc/dbus-launch.1.html


1

如果未将X与dbus一起使用,

您可以设置此环境变量,以便告诉dbus使用哪个总线会话:

export DBUS_SESSION_BUS_ADDRESS=

0

您是否尝试使用user-session@.service而不是user@.service。一user@.service开始我遇到了问题(不再确切知道哪个),并且在切换后仍然有效。

在您链接的第二个回购中。此单位将DISPLAY变量设置为:0。它不能在多个显示器上使用,但对我来说可以正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.