如何使用 hostnamectl 命令解决我的问题。它无法连接到 dbus

Bon*_*Ami 5 debian d-bus hostname systemd

我正在运行 Debian 9.4。hostname作品。

$ sudo strace -f hostnamectl
...snipped...
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/dbus/system_bus_socket"}, 33) = -1 ENOENT (No such file or directory)
...

Failed to create bus connection: No such file or directory
Run Code Online (Sandbox Code Playgroud)

更新:这里有更多信息:

$ sudo systemctl status dbus.service dbus.socket
Unit dbus.service could not be found.
Unit dbus.socket could not be found.

$ ps -p 1 
PID TTY          TIME CMD
1   ?        00:00:47 systemd

$ sudo systemctl list-unit-files --state=running
0 unit files listed.

$ sudo systemctl list-unit-files --state=enabled
...snipped...
26 unit files listed.
Run Code Online (Sandbox Code Playgroud)

小智 7

似乎缺少dbus包。

使用以下命令检查是否安装了 dbus 软件包:

$ sudo dpkg -l | grep dbus
ii  dbus                           1.10.26-0+deb9u1                        amd64        simple interprocess messaging system (daemon and utilities)
ii  libdbus-1-3:amd64              1.10.26-0+deb9u1                        amd64        simple interprocess messaging system (library)
Run Code Online (Sandbox Code Playgroud)

如果安装了dbus包,您将获得如上的输出。

如果输出为空白,则dbus包丢失。您可以使用以下命令安装软件包:

$ sudo apt-get install dbus
Run Code Online (Sandbox Code Playgroud)

安装软件包后,您可以检查状态:

$ sudo systemctl status dbus.service dbus.socket
? dbus.service - D-Bus System Message Bus
   Loaded: loaded (/lib/systemd/system/dbus.service; static; vendor preset: enabled)
   Active: active (running) since Fri 2018-09-07 23:39:14 EDT; 10s ago
     Docs: man:dbus-daemon(1)
 Main PID: 451 (dbus-daemon)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/dbus.service
           ??451 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation

? dbus.socket - D-Bus System Message Bus Socket
   Loaded: loaded (/lib/systemd/system/dbus.socket; static; vendor preset: enabled)
   Active: active (running) since Fri 2018-09-07 23:39:14 EDT; 10s ago
   Listen: /var/run/dbus/system_bus_socket (Stream)
Run Code Online (Sandbox Code Playgroud)