Problemi con dbus e systemd / user


8

Ho installato systemd in modo che l'utilizzo systemctl start user@meavvii i miei servizi utente come mi aspetto, ma il mio dbus uno non funzionerà (cosa che mi serve per PulseAudio).

C'è un modo in cui posso controllare dbus o systemd per capire cosa sto facendo di sbagliato?

A questo punto non ho più idee da provare. Per favore fatemi sapere se c'è qualcos'altro che posso fornire che potrebbe essere rilevante.


Informazioni aggiuntive / Tentativo di risoluzione

Sto usando Arch Linux, systemd 204-1 e dbus 1.6.10-1

Avvio di systemd tramite # systemctl start user@memi dà questo:

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

Avvio systemd --user &manuale come il mio utente produce:

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

E sputa il seguente errore se non sono in X, nonostante abbia abilitato il mio utente 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

Link correlati:

  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

I primi due menzionano un problema con dbus, ma al link 2 dice che il problema è stato risolto in dbus-1.6.9, quindi penso che il problema sia con la mia implementazione piuttosto che con questo bug.

Ho usato servizi utente di esempio dai link 2 e 3.

Risposte:


2

Se DBUS_SESSION_BUS_ADDRESSnon è impostato per un processo che tenta di utilizzare D-Bus, per impostazione predefinita tale processo tenterà di invocare l'avvio di dbus con l' --autolaunchopzione per avviare un nuovo bus di sessione o trovare l'indirizzo del bus esistente sul display X o in un file in ~/.dbus/session-bus/.

Quando dbus non viene utilizzato con Xorg, allo stesso modo in cui $ DISPLAY funziona per utilizzare un server diverso, è possibile impostare questa variabile di ambiente per dire a dbus quale sessione bus utilizzare:

export DBUS_SESSION_BUS_ADDRESS=""

Per maggiori informazioni, leggi http://dbus.freedesktop.org/doc/dbus-launch.1.html


1

Se non si utilizza X con dbus,

È possibile impostare questa variabile di ambiente per comunicare a dbus quale sessione bus utilizzare:

export DBUS_SESSION_BUS_ADDRESS=

0

Hai provato a utilizzare user-session@.serviceinvece di user@.service. Ho avuto problemi user@.serviceall'inizio, (non so più quale esattamente) e dopo averlo cambiato ha funzionato.

È nel secondo repository che hai collegato. Questa unità imposta la DISPLAYvariabile su :0. Non funzionerà con più display, ma funziona bene per me con uno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.