File .service DBus hilang

Saya sedang membangun layanan dbus khusus untuk permintaan saya sendiri dan ingin layanan tersebut dimulai secara otomatis ketika seseorang membutuhkannya. Untuk tujuan itu saya telah membuat file .service seperti ini

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

Di sini saya baru saja mengubah nama layanan sebenarnya dan dapat dieksekusi tetapi bukan itu intinya. Saya sudah memeriksa ulang nama aslinya - sama persis. Saya telah menempatkan file ini dengan nama com.mycompany.servicename.service ke folder /usr/share/dbus-1/services (Saya menggunakan Ubuntu 11.10) File yang dapat dieksekusi memiliki izin x untuk semua orang. Dan inilah masalahnya - ketika saya mencoba memulai klien yang berfungsi

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

Saya mendapatkan dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name com.mycompany.servicename was not provided by any .service files

Objek dengan jalur '/path/to/object' didaftarkan tepat setelah layanan dimulai. Saya hanya tidak mengerti mengapa dbus tidak dapat menemukan file .service saya. Mungkin saya melewatkan sesuatu? Ada ide?

Edit Saya berhasil membuat D-BUS memulai skrip saya secara otomatis. Bagian file .service harus diberi nama [D-BUS Service] bukan [D-Bus service]


person pss    schedule 08.02.2012    source sumber
comment
Di mana Anda meletakkan file .service Anda? Halaman manual untuk dbus-daemon mengacu pada Spesifikasi Dir Dasar XDG, dan pekerja magang tersebut sepertinya menyarankan Anda untuk memasukkannya ke dalam ~/.local/share (lihat standards.freedesktop.org/basedir-spec/latest/ar01s03.html)   -  person Lawrence D'Oliveiro    schedule 09.02.2012
comment
Sayangnya tidak ada bukti file .service lain yang menyediakan session buses tetapi pada saat yang sama banyak juga di folder yang saya sebutkan sebelumnya (/usr/share/dbus-1/services). Nama folder yang saya dapatkan di sini   -  person pss    schedule 16.02.2012
comment
@pss, Anda harus membuat jawaban dan menerimanya sendiri!   -  person Yasushi Shoji    schedule 18.08.2012


Jawaban (1)


Berikut ringkasan singkat komentarnya...

Buat subdirektori dbus-1/services/ di salah satu direktori yang disebutkan dalam Spesifikasi Direktori Dasar XDG. Biasanya, ~/.local/share/dbus-1/services/ berfungsi dengan baik. Masuk ke subdirektori baru, buat file bernama com.mycompany.servicename.service dan tambahkan baris:

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

Harap dicatat bahwa D-BUS di [D-BUS Service] harus menggunakan huruf kapital.

Itu dia!

person mzuther    schedule 15.12.2012
comment
apakah ini berarti dbus-daemon ingin mengelola layanan saya? (Saya berharap untuk memulai aplikasi saya secara manual yang akan mendaftar sendiri di dbus untuk antarmuka pesan tertentu dan jalur objek melalui dbus-python. Namun saya mendapatkan pengecualian ServiceUnknown.) - person n611x007; 15.11.2013