Jawaban:
Saya memiliki masalah yang sama ketika saya login ke kotak gentoo saya dari jarak jauh melalui ssh. Dalam kasus saya ini karena variabel lingkungan XDG_RUNTIME_DIR
dan DBUS_SESSION_BUS_ADDRESS
tidak ada. Jalankan perintah berikut dan coba lagi:
export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
Jika ini membantu, Anda bisa memasukkan perintah-perintah itu ke dalam .bashrc Anda. Saya kira pasti ada solusi yang lebih elegan daripada .bashrc tetapi itu tergantung pada distro Anda.
Di sinilah saya menemukan solusi itu.
Edit:
login sebagai root, saya berhasil berjalan systemctl --user
sebagai pengguna lain menggunakan su
sebagai berikut:
su -c 'XDG_RUNTIME_DIR="/run/user/$UID" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status' username
atau menggunakan sudo
(perhatikan, saya harus secara eksplisit menambahkan masing-masing pengguna UID (1000) ke jalur '/ run / user /', tetapi jika Anda menjalankannya dari skrip bash, Anda dapat menggunakan $ SUDO_UID sebagai gantinya):
sudo -u username XDG_RUNTIME_DIR="/run/user/1000" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status
/etc/profile.d/dbus.sh
. Saya kirasudo
perlu yang masuk daftar putih, karena membersihkan lingkungan secara default. Saya tidak yakin apakah itu hanya akan mentransfer dir runtime pengguna saat ini.