Arch-Linux
dbus 和 systemd/user 出現問題
我已經設置了 systemd,這樣 using
systemctl start user@me
將按我的預期啟動我的使用者服務,但我的 dbus 一個不會去(我需要 PulseAudio)。有什麼方法可以檢查 dbus 或 systemd 以找出我做錯了什麼?
在這一點上,我對嘗試的事情沒有想法。請讓我知道我是否可以提供其他任何可能相關的資訊。
附加資訊/解決方案嘗試
我正在使用 Arch Linux、systemd 204-1 和 dbus 1.6.10-1
啟動使用者 systemd through
# 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}]
如果我不在 X 中,則會吐出以下錯誤,儘管我確實啟用了我的使用者 dbus.service:
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
相關連結:
- https://superuser.com/questions/476379/how-do-i-setup-a-systemd-service-to-be-started-by-a-non-root-user-as-a-user-daem
- https://github.com/sofar/user-session-units
- https://github.com/grawity/systemd-user-units
前兩個提到了 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=""
有關更多資訊,請閱讀http://dbus.freedesktop.org/doc/dbus-launch.1.html