dbusおよびsystemd / userに関する問題


8

私はsystemdをセットアップして、を使用systemctl start user@meするとユーザーサービスが期待どおりに開始されるようになりましたが、dbusは機能しません(PulseAudioに必要です)。

私が間違っていることを理解するためにdbusまたはsystemdをチェックできる方法はありますか?

この時点では、試すことのアイデアが足りません。他に関連する可能性のあるものがあれば、お知らせください。


追加情報/解決の試み

Arch Linux、systemd 204-1、dbus 1.6.10-1を使用しています

ユーザーsystemdを起動すると、次のようになります# systemctl start user@me

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

systemd --user &ユーザーが作成したときに手動で開始:

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

また、ユーザーdbus.serviceを有効にしたにもかかわらず、Xを使用していない場合は、次のエラーが出力されます。

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

関連リンク:

  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

最初の2つはdbusの問題に言及していますが、リンク2ではdbus-1.6.9で問題が修正されたと書かれているので、問題はこのバグではなく私の実装にあると思います。

リンク2および3のユーザーサービスの例を使用しました。

回答:


2

DBUS_SESSION_BUS_ADDRESSD-Busを使おうとするプロセスにが設定されていない場合、デフォルトでは、そのプロセスはdbus-launch --autolaunchを起動して、新しいセッションバスを起動するか、Xディスプレイまたはファイルで既存のバスアドレスを検索します。の中で~/.dbus/session-bus/

Xusでdbusが使用されていない場合、$ DISPLAYが別のサーバーを使用するのと同じように、この環境変数を設定して、使用するバスセッションをdbusに指示できます。

export DBUS_SESSION_BUS_ADDRESS=""

詳細については、http://dbus.freedesktop.org/doc/dbus-launch.1.htmlをご覧ください。


1

Xをdbusで使用しない場合、

この環境変数を設定して、使用するバスセッションをdbusに指示できます。

export DBUS_SESSION_BUS_ADDRESS=

0

あなたが使用してみました持っているuser-session@.service代わりにuser@.service。私はuser@.service最初に問題を抱えていて(もう正確にはわかりません)、切り替えた後はうまくいきました。

リンクした2番目のリポジトリにあります。このユニットはDISPLAY変数をに設定します:0。複数のディスプレイでは機能しませんが、1つのディスプレイでうまく機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.