テクノロジー · 実用ガイド
systemctl --user の「Failed to connect to bus」—変数を設定する前に session context を確認
実効 user、runtime directory、bus socket、user manager を一致させ、login・remote 管理・linger のどれが必要かを判断します。

user bus error は command の実行者と service manager を所有する login context の不一致から生じることが多く、まず context を保存します。
安全な手順は四 layer を確認し、必要な lifecycle を分類し、一つだけ修正して元の失敗 route を再試験することです。
context mismatch として扱う
`systemctl --user` は一人の login user の service manager と通信します。bus error は transport symptom であり、unit file や D-Bus 全体の故障を証明しません。
command、effective UID、target user、launcher、環境、完全な error を保存し、SSH・sudo・su・cron・CI・Ansible・container・login を区別します。
四つの layer を作らず確認
target UID と `/run/user/UID/bus` の存在、owner、mode、type を外から調べ、loginctl で user と session を読みます。
よくある path を盲目的に export しません。identity、runtime、socket、manager が一致する必要があります。
三つの execution model を分ける
interactive login は実 session で、one-off 管理は target manager を明示し、persistent user service だけ linger を検討します。
enable-linger は logout 後や boot 時の manager lifecycle を変える policy です。
package 変更前に layer を分類
wrong UID は sudo/su/automation、missing runtime/manager は login/PAM/logind、wrong socket は session lifecycle を示します。
package install、reboot、linger、shell file は別 layer を変える可能性があるため、一つの evidence-based change に限定します。
同じ launcher で再試験
修正後に同じ SSH、automation、cron、admin route で再実行し、四 layer を再確認します。
read-only manager command と target unit を確認し、別 shell だけの成功を closure にしません。
audit の境界を知る
この audit は user/system unit、linger、PAM 修正、runtime file 削除、bus 作成を決定しません。
元 launcher が正しい manager に届き、必要な場合だけ logout/reboot persistence を証明して完了です。
