Problemas con dbus y systemd / user


8

He configurado systemd para que el uso systemctl start user@mecomience mis servicios de usuario como esperaba, pero mi dbus one simplemente no funcionará (lo que necesito para PulseAudio).

¿Hay alguna forma de verificar dbus o systemd para averiguar qué estoy haciendo mal?

En este punto no tengo ideas de cosas para probar. Avíseme si hay algo más que pueda proporcionar que pueda ser relevante.


Información adicional / Intento de resolución

Estoy usando Arch Linux, systemd 204-1 y dbus 1.6.10-1

El inicio del sistema de usuario # systemctl start user@meme da esto:

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

Comenzando systemd --user &manualmente cuando mi usuario produce:

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

Y escupe el siguiente error si no estoy en X, a pesar del hecho de que habilité mi usuario 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

Enlaces relacionados:

  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

Los dos primeros mencionan un problema con dbus, pero en el enlace 2 dice que el problema se solucionó en dbus-1.6.9, por lo que creo que el problema está en mi implementación en lugar de este error.

Usé ejemplos de servicios de usuario de los enlaces 2 y 3.

Respuestas:


2

Si DBUS_SESSION_BUS_ADDRESSno está configurado para un proceso que intenta usar D-Bus, de manera predeterminada ese proceso intentará invocar dbus-launch con la --autolaunchopción de iniciar un nuevo bus de sesión o encontrar la dirección de bus existente en la pantalla X o en un archivo en ~/.dbus/session-bus/.

Cuando no se usa dbus con Xorg, de la misma manera que $ DISPLAY funciona para usar un servidor diferente, puede configurar esta variable de entorno para decirle a dbus qué sesión de bus usar:

export DBUS_SESSION_BUS_ADDRESS=""

Para obtener más información, lea http://dbus.freedesktop.org/doc/dbus-launch.1.html


1

Si no usa X con dbus,

Puede configurar esta variable de entorno para decirle a dbus qué sesión de bus usar:

export DBUS_SESSION_BUS_ADDRESS=

0

¿Has intentado usar en user-session@.servicelugar de user@.service. Tuve problemas user@.serviceal principio (ya no sé exactamente cuál) y después de cambiarlo funcionó.

Está en el segundo repositorio que vinculaste. Esta unidad establece la DISPLAYvariable en :0. No funcionará con múltiples pantallas, pero funciona bien para mí con una.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.