Problemas com dbus e systemd / user

8

Eu configurei o systemd para que usar systemctl start user@me inicie meus serviços de usuário como eu esperava, mas o meu dbus não funcionará (o que eu preciso para o PulseAudio).

Existe alguma maneira de verificar o dbus ou o systemd para descobrir o que estou fazendo de errado?

Neste ponto, estou sem ideias para tentar. Por favor, deixe-me saber se há mais alguma coisa que eu possa fornecer que possa ser relevante.

Tentativa de informações adicionais / resolução

Estou usando o Arch Linux, systemd 204-1 e dbus 1.6.10-1

Iniciando o systemd do usuário até # systemctl start user@me , isso me dá:

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

A partir de systemd --user & manualmente, como o meu usuário produz:

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

E cospe o seguinte erro se eu não estiver no X, apesar do fato de que eu habilitei meu usuário 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

Links relacionados:

  1. link
  2. link

Os dois primeiros mencionam um problema com o dbus, mas no link 2 ele diz que o problema está corrigido no dbus-1.6.9, então acho que o problema está na minha implementação e não no bug.

Eu usei serviços de usuário de exemplo dos links 2 & 3.

    
por mellowmaroon 15.05.2013 / 21:46

3 respostas

2

Se DBUS_SESSION_BUS_ADDRESS não estiver definido para um processo que tente usar o D-Bus, por padrão, esse processo tentará chamar o dbus-launch com a opção --autolaunch para iniciar um novo barramento de sessão ou encontrar o barramento existente endereço no display X ou em um arquivo em ~/.dbus/session-bus/ .

Quando o dbus não está sendo usado com o Xorg, da mesma maneira que o $ DISPLAY trabalha para usar um servidor diferente, você pode definir esta variável de ambiente para dizer ao dbus qual sessão do barramento usar:

export DBUS_SESSION_BUS_ADDRESS=""

Para mais informações, leia o link

    
por 17.07.2013 / 20:53
1

Se não estiver usando X com dbus,

Você pode definir esta variável de ambiente para dizer ao dbus qual sessão de barramento usar:

export DBUS_SESSION_BUS_ADDRESS=

Espero que esta ajuda!

    
por 25.06.2013 / 11:55
0

Você tentou usar [email protected] em vez de [email protected] . Eu tive problemas com [email protected] no começo, (não sei mais exatamente qual) e depois de trocar funcionou.

Está no segundo repo que você vinculou. Essa unidade define a variável DISPLAY como :0 . Não funcionará com vários monitores, mas funciona bem para mim com um.

    
por 16.05.2013 / 00:49