Problème avec dbus et systemd / user

8

J'ai configuré systemd pour que l'utilisation systemctl start user@medémarre mes services utilisateur comme je m'y attendais, mais mon dbus ne fonctionnera pas (dont j'ai besoin pour PulseAudio).

Existe-t-il un moyen de vérifier dbus ou systemd pour comprendre ce que je fais mal?

À ce stade, je n'ai plus d'idées de choses à essayer. Veuillez me faire savoir s'il y a autre chose que je peux fournir qui pourrait être pertinent.


Informations supplémentaires / tentative de résolution

J'utilise Arch Linux, systemd 204-1 et dbus 1.6.10-1

Le démarrage de systemd par l'utilisateur # systemctl start user@meme donne ceci:

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

Démarrage systemd --user &manuel lorsque mon utilisateur produit:

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

Et crache l'erreur suivante si je ne suis pas dans X, malgré le fait que j'ai activé mon utilisateur 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

Liens connexes:

  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

Les deux premiers mentionnent un problème avec dbus, mais au lien 2, il est dit que le problème est résolu dans dbus-1.6.9, donc je pense que le problème vient de mon implémentation plutôt que de ce bogue.

J'ai utilisé des exemples de services utilisateur des liens 2 et 3.

bitflips
la source

Réponses:

2

Si DBUS_SESSION_BUS_ADDRESSn'est pas défini pour un processus qui essaie d'utiliser D-Bus, par défaut, ce processus tentera d'appeler dbus-launch avec l' --autolaunchoption de démarrer un nouveau bus de session ou de trouver l'adresse de bus existante sur l'affichage X ou dans un fichier dans ~/.dbus/session-bus/.

Lorsque dbus n'est pas utilisé avec Xorg, de la même manière que $ DISPLAY fonctionne pour utiliser un serveur différent, vous pouvez définir cette variable d'environnement afin de dire à dbus quelle session de bus utiliser:

export DBUS_SESSION_BUS_ADDRESS=""

Pour plus d'informations, consultez http://dbus.freedesktop.org/doc/dbus-launch.1.html

Dwight Spencer
la source
1

Si vous n'utilisez pas X avec dbus,

Vous pouvez définir cette variable d'environnement afin d'indiquer à dbus la session de bus à utiliser:

export DBUS_SESSION_BUS_ADDRESS=
vichak
la source
0

Avez-vous essayé d'utiliser [email protected]au lieu de [email protected]. J'ai eu des problèmes [email protected]au début, (je ne sais plus exactement) et après le changement, cela a fonctionné.

C'est dans le deuxième dépôt que vous avez lié. Cette unité définit la DISPLAYvariable sur :0. Cela ne fonctionnera pas avec plusieurs écrans, mais fonctionne bien pour moi avec un seul.

t-8ch
la source