Вопрос или проблема
Я использую Debian 9.4. Команда hostname
работает.
$ sudo strace -f hostnamectl
...срезано...
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/dbus/system_bus_socket"}, 33) = -1 ENOENT (Нет такого файла или каталога)
...
Не удалось установить соединение с шиной: Нет такого файла или каталога
ОБНОВЛЕНИЕ: вот дополнительная информация:
$ sudo systemctl status dbus.service dbus.socket
Единица dbus.service не найдена.
Единица dbus.socket не найдена.
$ ps -p 1
PID TTY TIME CMD
1 ? 00:00:47 systemd
$ sudo systemctl list-unit-files --state=running
0 файлов единиц в списке.
$ sudo systemctl list-unit-files --state=enabled
...срезано...
26 файлов единиц в списке.
Похоже, что пакет dbus отсутствует.
Проверьте, установлен ли пакет dbus, с помощью следующей команды:
$ sudo dpkg -l | grep dbus
ii dbus 1.10.26-0+deb9u1 amd64 простая система межпроцессного взаимодействия (демон и утилиты)
ii libdbus-1-3:amd64 1.10.26-0+deb9u1 amd64 простая система межпроцессного взаимодействия (библиотека)
Если пакет dbus установлен, вы получите вывод, как выше.
Если вывод пуст, значит пакет dbus отсутствует. Вы можете установить пакет с помощью следующей команды:
$ sudo apt-get install dbus
После установки пакета запустите сервисы:
$ sudo systemctl start dbus.service dbus.socket
Затем вы можете проверить статус:
$ sudo systemctl status dbus.service dbus.socket
● dbus.service - D-Bus System Message Bus
Загружено: загружено (/lib/systemd/system/dbus.service; статический; предустановка вендора: включена)
Активно: активно (работает) с пятницы, 07 сент. 2018 23:39:14 EDT; 10 секунд назад
Документация: man:dbus-daemon(1)
Основной PID: 451 (dbus-daemon)
Задачи: 1 (лимит: 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
Загружено: загружено (/lib/systemd/system/dbus.socket; статический; предустановка вендора: включена)
Активно: активно (работает) с пятницы, 07 сент. 2018 23:39:14 EDT; 10 секунд назад
Прослушивание: /var/run/dbus/system_bus_socket (Поток)
Я решил проблему, используя эти команды в контейнерах centos7/8, а также в контейнерах ubuntu:
dbus-uuidgen > /var/lib/dbus/machine-id
mkdir -p /var/run/dbus
dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address
Но затем возникла другая ошибка, связанная с отказом в соединении с сокетом dbus. Буду держать в курсе, если удастся продвинуться.
Ответ или решение
Чтобы решить проблему с командой hostnamectl
, которая не может подключиться к D-Bus в вашей системе Debian 9.4, выполните следующие шаги:
-
Проверка установки пакета D-Bus:
Убедитесь, что пакетdbus
установлен на вашем системе. Выполните команду:sudo dpkg -l | grep dbus
Если вы видите в выводе строки, содержащие
dbus
иlibdbus-1-3
, это означает, что пакет установлен. Если команда не выдала никаких результатов, вам нужно установить пакетdbus
:sudo apt-get install dbus
-
Запуск служб D-Bus:
Если пакетdbus
был установлен, но D-Bus все равно не работает, попробуйте запустить службы D-Bus с помощью следующих команд:sudo systemctl start dbus.service dbus.socket
После этого проверьте статус служб:
sudo systemctl status dbus.service dbus.socket
Вы должны увидеть, что обе службы активны (active) и работают (running). Если одна из служб не работает, это может потребовать дополнительного устранения неисправностей.
-
Настройка D-Bus в контейнерах (при необходимости):
Если вы работаете в контейнере (например, CentOS или Ubuntu), вам может понадобиться выполнить следующие команды для создания необходимых файлов и запуска D-Bus:dbus-uuidgen > /var/lib/dbus/machine-id mkdir -p /var/run/dbus dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address
-
Проверка настроек среды:
Убедитесь, что ваша система правильно настроена для использования D-Bus. Иногда настройки конфигурации могут быть неверными, и D-Bus может не получать необходимые разрешения для работы. Это может потребовать проверки системных журналов с помощью команды:journalctl -xe
Обратите внимание на любые сообщения об ошибках, связанные с D-Bus, и устраните их.
-
Перезагрузка системы (если необходимо):
Если предыдущие шаги не помогли решить проблему, рассмотрите возможность перезагрузки системы после установкиdbus
и его конфигурации. Это может помочь активировать все необходимые службы и настройки.
Следуя вышеуказанным шагам, вы должны окончательно решить проблему с подключением к D-Bus через hostnamectl
на вашей системе Debian 9.4. Если у вас возникают дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью.