Upstart, mesmo ao usar o setuid, não define a variável de ambiente HOME . weechat tenta usar essa variável para procurar seu diretório de configuração quando -d
não está especificado.
weechat imprime Error: unable to get HOME directory
em resposta a esse problema. No entanto, ele não foi lógico porque não tínhamos onde enviar esse erro, exceto stdout, que screen / dtach não fez nada além de obedientemente retornar porque o processo original terminou.
Você pode verificar se esse é o seu problema alterando a linha exec para esta:
exec /usr/bin/weechat
Se /var/log/upstart/chatscreen.log
disser Error: unable to get HOME directory
, então este foi o problema.
Aqui está um arquivo de serviço do upstart corrigido:
description "Run a persistent weechat within screen"
respawn
setuid chat
setgid chat
# Not sure if screen needs this.
env LANG=en_US.utf8
exec screen -S chatscreen weechat -d /home/chat/.weechat
Ou se preferir o dtach leve:
description "Run a persistent weechat within dtach"
respawn
setuid chat
setgid chat
expect fork
env LANG=en_US.utf8
exec dtach -n /home/chat/chatdtach.sock weechat -d /home/chat/.weechat
A variável de ambiente LANG é para que possamos reconhecer o desacoplador como suportando UTF-8. Sem isso, meu weechat estava exibindo caixas estranhas no lado direito em vez do separador vertical de lista de apelidos. Altere-o para qualquer localidade que você gostaria de usar.
Não tenho certeza se a tela requer LANG. Eu só testei com dtach.