.Служебный файл D-Bus

#dbus

#dbus

Вопрос:

Я пытаюсь автоматически запустить службу DBus при запуске моей клиентской программы. Я настроил служебный файл, но он не работает.

Имя моей службы

 org.fandingo.PMP
  

Я регистрирую имя на сервере python с

  name = dbus.service.BusName('org.fandingo.PMP', session_bus)
 object = PMPService(session_bus, '/PMPService', PMPProxy())
  

Я могу подключиться к этому нормально, если вручную выполню код сервера со следующим от клиента

 remote = bus.get_object('org.fandingo.PMP', '/PMPService')
  

Таким образом, сервер и клиент работают, если вызываются вручную. Если я просто попробую клиент, я получу следующее исключение Python

 dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name org.fandingo.PMP was not provided by any .service files
  

Вот мой служебный файл

 -rw-r--r--. root root unconfined_u:object_r:usr_t:s0   /usr/share/dbus-1/services/org.fandingo.PMP.service
  

Эти разрешения и метки SELinux идентичны другим служебным файлам.

Содержимое файла .service

 [D-Bus Service]
Name=org.fandingo.PMP
Exec=/home/fandingo/code/python/pmp/src/pmpserver.py
User=fandingo
  

pmpserver.py является исполняемым и имеет правильный shebang.

Кто-нибудь видит какие-либо проблемы с моей конфигурацией?

Спасибо,

Ответ №1:

Наконец-то разобрался с этим.

Я не уверен точно, как выполняются файлы .service, но они не получают /bin/env, установленный должным образом.

Мой shebang не работал должным образом:

 #!/usr/bin/env python
  

Я изменил свой служебный файл на

 [D-Bus Service]
Name=org.fandingo.PMP
Exec=python /home/fandingo/code/python/pmp/src/pmpserver.py
  

Теперь все работает отлично.

Комментарии:

1. Более обычное расположение env находится в /usr/bin . По крайней мере, в Linux он есть.