Probleme mit dbus und systemd / user


8

Ich habe systemd so eingerichtet, dass die Verwendung systemctl start user@memeine Benutzerdienste wie erwartet startet, aber mein dbus one geht einfach nicht (was ich für PulseAudio benötige).

Gibt es eine Möglichkeit, dbus oder systemd zu überprüfen, um herauszufinden, was ich falsch mache?

An diesem Punkt habe ich keine Ideen mehr, was ich versuchen könnte. Bitte lassen Sie mich wissen, ob ich noch etwas anbieten kann, das relevant sein könnte.


Zusätzliche Informationen / Lösungsversuch

Ich verwende Arch Linux, systemd 204-1 und dbus 1.6.10-1

Das Starten von user systemd durch # systemctl start user@megibt mir Folgendes:

├─systemd─┬─(sd-pam)
│         ├─mpd───5*[{mpd}]
│         └─pulseaudio─┬─gconf-helper
│                      └─2*[{pulseaudio}]

Starten systemd --user &manuell als mein Benutzer erzeugt:

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

Und spuckt den folgenden Fehler aus, wenn ich nicht in X bin, obwohl ich meinen Benutzer dbus.service aktiviert habe:

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

Verwandte Links:

  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

Die ersten beiden erwähnen ein Problem mit dbus, aber unter Link 2 heißt es, dass das Problem in dbus-1.6.9 behoben ist. Ich denke, das Problem liegt eher in meiner Implementierung als in diesem Fehler.

Ich habe Beispielbenutzerdienste von den Links 2 und 3 verwendet.

Antworten:


2

Wenn dies DBUS_SESSION_BUS_ADDRESSnicht für einen Prozess festgelegt ist, der versucht, D-Bus zu verwenden, versucht dieser Prozess standardmäßig, dbus-launch mit der --autolaunchOption aufzurufen , einen neuen Sitzungsbus zu starten oder die vorhandene Busadresse auf dem X-Display oder in einer Datei zu finden in ~/.dbus/session-bus/.

Wenn dbus nicht mit Xorg verwendet wird, so wie $ DISPLAY einen anderen Server verwendet, können Sie diese Umgebungsvariable festlegen, um dbus mitzuteilen, welche Bussitzung verwendet werden soll:

export DBUS_SESSION_BUS_ADDRESS=""

Weitere Informationen finden Sie unter http://dbus.freedesktop.org/doc/dbus-launch.1.html


1

Wenn Sie X nicht mit dbus verwenden,

Sie können diese Umgebungsvariable festlegen, um dbus mitzuteilen, welche Bussitzung verwendet werden soll:

export DBUS_SESSION_BUS_ADDRESS=

0

Haben Sie versucht, user-session@.servicestatt zu verwenden user@.service. Ich hatte user@.serviceam Anfang Probleme damit (weiß nicht mehr genau welche) und nach dem Umschalten hat es funktioniert.

Es ist im zweiten Repo, das Sie verlinkt haben. Dieses Gerät setzt die DISPLAYVariable auf :0. Es funktioniert nicht mit mehreren Displays, aber mit einem funktioniert es gut für mich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.