Masalah dengan dbus dan systemd / pengguna


8

Saya telah mengatur sistemd sehingga menggunakan systemctl start user@meakan memulai layanan pengguna saya seperti yang saya harapkan, tapi dbus saya tidak akan pergi (yang saya butuhkan untuk PulseAudio).

Apakah ada cara saya dapat memeriksa dbus atau systemd untuk mencari tahu apa yang saya lakukan salah?

Pada titik ini saya kehabisan ide untuk mencoba sesuatu. Harap beri tahu saya jika ada hal lain yang dapat saya berikan yang mungkin relevan.


Info Tambahan / Upaya Resolusi

Saya menggunakan Arch Linux, systemd 204-1, dan dbus 1.6.10-1

Memulai user systemd melalui # systemctl start user@mememberi saya ini:

├─systemd─┬─(sd-pam)
│         ├─mpd───5*[{mpd}]
│         └─pulseaudio─┬─gconf-helper
│                      └─2*[{pulseaudio}]

Mulai systemd --user &secara manual saat pengguna saya menghasilkan:

├─bash─┬─pstree
│      └─systemd─┬─2*[dbus-daemon]
│                ├─dbus-launch <<< X only
│                ├─gconfd-2    <<< X only
│                ├─mpd───5*[{mpd}]
│                └─pulseaudio─┬─gconf-helper
│                             └─2*[{pulseaudio}]

Dan meludahkan kesalahan berikut jika saya tidak berada di X, meskipun faktanya saya memang mengaktifkan pengguna dbus.service saya:

Failed to open private bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Failed to open private bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11

Tautan yang berhubungan:

  1. /superuser/476379/how-do-i-setup-a-systemd-service-to-be-started-by-a-non-root-user-as-a-user-daem
  2. https://github.com/sofar/user-session-units
  3. https://github.com/grawity/systemd-user-units

Dua yang pertama menyebutkan masalah dengan dbus, tetapi pada tautan 2 dikatakan bahwa masalahnya sudah diperbaiki di dbus-1.6.9, jadi saya pikir masalahnya ada pada implementasi saya daripada bug ini.

Saya menggunakan contoh layanan pengguna dari tautan 2 & 3.

Jawaban:


2

Jika DBUS_SESSION_BUS_ADDRESStidak diatur untuk proses yang mencoba menggunakan D-Bus, secara default proses itu akan mencoba untuk memanggil peluncuran-dbus dengan --autolaunchopsi untuk memulai bus sesi baru atau menemukan alamat bus yang ada pada tampilan X atau dalam file di ~/.dbus/session-bus/.

Ketika dbus tidak digunakan dengan Xorg, sama seperti $ DISPLAY berfungsi untuk menggunakan server yang berbeda, Anda dapat mengatur variabel lingkungan ini untuk memberi tahu dbus sesi bis mana yang akan digunakan:

export DBUS_SESSION_BUS_ADDRESS=""

Untuk info lebih lanjut, baca http://dbus.freedesktop.org/doc/dbus-launch.1.html


1

Jika tidak menggunakan X dengan dbus,

Anda dapat mengatur variabel lingkungan ini untuk memberi tahu dbus sesi bus mana yang akan digunakan:

export DBUS_SESSION_BUS_ADDRESS=

0

Apakah Anda mencoba menggunakan user-session@.servicebukan user@.service. Saya punya masalah dengan user@.servicepada awalnya, (tidak tahu lagi mana tepatnya) dan setelah beralih berfungsi.

Ada dalam repo kedua yang Anda tautkan. Unit ini mengatur DISPLAYvariabel menjadi :0. Ini tidak akan berfungsi dengan banyak tampilan, tetapi bekerja dengan baik untuk saya dengan satu layar.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.