Unyablog.

のにれんのブログ

Debian で systemd --user 時に dbus-daemon を起動する

systemd を user 単位で動かした際、主に CUI 環境では*1dbus-daemon は systemd が内部で用いるものしか生成されない*2

このような状況で、dbus 経由で systemd 等を触りたい場合は dbus-user-session を入れると良い。

Debian -- stretch の dbus-user-session パッケージに関する詳細

このパッケージの実体は systemd unit (/usr/lib/systemd/user/dbus.{service,socket} など) である。stretch の時点ではファイルを設置しているだけなので、実際に dbus-daemon を起動するには

$ systemctl start dbus --user

などとする。

そうすれば、 /run/user/$uid/bus ができて使えるようになる。

$ busctl --user tree
Service org.freedesktop.DBus:
Only root object discovered.

Service org.freedesktop.systemd1:
└─/org
  └─/org/freedesktop
...

busctl さっき知ったけど便利。

*1:gnome など dbus 使う GUI 環境で使っていれば gnome-session が dbus-daemon を起動してくれる

*2:/run/user/$uid/systemd/private がそれ