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

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

systemctl start user@meを使用すると、期待どおりにユーザーサービスが開始されますが、dbusサービスは開始されないようにsystemdを設定しました(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}]

X を使用しない場合、ユーザー dbus.service が有効になっていても、次のエラーが発生します。

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. https://superuser.com/questions/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のサンプルユーザーサービスを使用しました。

答え1

DBUS_SESSION_BUS_ADDRESSD-Busを使用するプロセスにこのオプションが設定されていない場合、デフォルトではプロセスはdbus-launchを呼び出し、--autolaunch新しいセッションバスを開始するか、Xディスプレイまたはファイル内の既存のバスアドレスを見つけることを選択します~/.dbus/session-bus/

$ DISPLAYが他のサーバーを使用するのと同じ方法でdbusがXorgで使用されていない場合は、この環境変数を設定して使用するバスセッションをdbusに通知できます。

export DBUS_SESSION_BUS_ADDRESS=""

もっと情報が欲しいなら読んでくださいhttp://dbus.freedesktop.org/doc/dbus-launch.1.html

答え2

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

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

export DBUS_SESSION_BUS_ADDRESS=

答え3

[email protected]代わりに試してみました[email protected]か?最初は問題があり、[email protected](正確にどの問題なのかわからない)、切り替えた後に問題が解決しました。

接続した2番目のストレージにあります。本機はDISPLAY変数をに設定します:0。複数のモニターでは機能しませんが、1つのモニターではうまく機能します。

関連情報