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

おすすめ記事