Systemd, inicie a unidade de nível de usuário com acesso sudo

1

Eu tenho um pacote Debian que instala meu software e ele precisa iniciar dois aplicativos no script de pós-instalação. O primeiro é o daemon e o segundo é um processo de segundo plano, ambos são gerenciados com systemd . O problema é que eu corro sudo dpkg -i ... e ele falha ao iniciar a unidade de nível de usuário com o seguinte erro: Failed to connect to bus: No such file or directory. É uma prática normal iniciar scripts após a instalação, mas os direitos sudo me permitem iniciar meu script. Talvez eu esteja perdendo alguma coisa. Alguém sabe como superar esse problema?

O comando que é usado para iniciar o script: systemctl --user start test.service . Quando executado a partir do instalador, ele se torna sudo systemctl --user start test.service (o mesmo não funciona no terminal).

    
por durkmurder 13.06.2016 / 16:24

1 resposta

1

Ok, consegui corrigir o problema. Não foi um problema para começar, apenas minha falta de conhecimento sobre as sessões do DBus e como elas funcionam. Espero que minha resposta ajude alguém.

Quando você vai abrir o terminal e executar systemctl --user command unit tudo vai ficar bem, mas quando você vai tentar fazer em sudo ou mudar para outro usuário usando o comando su , você irá falhar com o erro que eu tive:

Failed to connect to bus: No such file or directory.

O problema é que systemctl para se conectar a sessões do usuário usa o endereço da sessão do dbus que é configurado na variável DBUS_SESSION_ADDRESS env. Quando você faz sudo ou su você obtém um ambiente muito limitado, simplesmente você está perdendo DBUS_SESSION_ADDRESS e outras variáveis env. Então, quando você receber erros semelhantes, verifique seu ambiente, talvez algo importante esteja faltando.

    
por durkmurder 02.09.2016 / 14:40