Файл DBus .service отсутствует - PullRequest
       48

Файл DBus .service отсутствует

4 голосов
/ 08 февраля 2012

Я создаю пользовательский dbus сервис для своих собственных потребностей и хочу, чтобы он запускался автоматически, когда кому-то это нужно.Для этого я создал .service файл, подобный этому

[D-Bus Service]
Name=com.mycompany.servicename
Exec=/home/myuser/Workspace/service-start
User=myuser

Здесь я просто изменил фактическое имя службы и исполняемого файла, но это не главное.Я дважды проверил настоящие имена - они точно совпадают.Я поместил этот файл под именем com.mycompany.servicename.service в папку / usr / share / dbus-1 / services (я использую Ubuntu 11.10). Исполняемый файл имеет права доступа x для всех.И вот проблема - когда я пытаюсь запустить клиент, который выполняет

bus = dbus.SessionBus()
bus.get_object('com.mycompany.servicename','/path/to/object')

, я получаю dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name com.mycompany.servicename was not provided by any .service files

Объект с путем '/path/to/object' регистрируется сразу после запуска службы.Я просто не понимаю, почему dbus не может найти мой .service файл.Может я что-то упустил?Есть идеи?

Редактировать Мне удалось заставить D-BUS автоматически запустить мой скрипт.Раздел .service файла должен называться [D-BUS Service] вместо [D-Bus service]

1 Ответ

2 голосов
/ 15 декабря 2012

Вот краткая сводка комментариев ...

Создайте подкаталог dbus-1/services/ в одном из каталогов, указанных в Спецификация базового каталога XDG .Обычно ~/.local/share/dbus-1/services/ работает просто отлично.Введите новый подкаталог, создайте файл с именем com.mycompany.servicename.service и добавьте строки:

[D-BUS Service]
Name=com.mycompany.servicename
Exec=/home/myuser/Workspace/service-start
User=myuser

Обратите внимание, что D-BUS в [D-BUS Service] необходимо использовать с заглавной буквы.

Вот и все!

...