Как мне решить проблему с командой hostnamectl? Она не может подключиться к dbus.

Вопрос или проблема

Я использую 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, выполните следующие шаги:

  1. Проверка установки пакета D-Bus:
    Убедитесь, что пакет dbus установлен на вашем системе. Выполните команду:

    sudo dpkg -l | grep dbus

    Если вы видите в выводе строки, содержащие dbus и libdbus-1-3, это означает, что пакет установлен. Если команда не выдала никаких результатов, вам нужно установить пакет dbus:

    sudo apt-get install dbus
  2. Запуск служб D-Bus:
    Если пакет dbus был установлен, но D-Bus все равно не работает, попробуйте запустить службы D-Bus с помощью следующих команд:

    sudo systemctl start dbus.service dbus.socket

    После этого проверьте статус служб:

    sudo systemctl status dbus.service dbus.socket

    Вы должны увидеть, что обе службы активны (active) и работают (running). Если одна из служб не работает, это может потребовать дополнительного устранения неисправностей.

  3. Настройка 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
  4. Проверка настроек среды:
    Убедитесь, что ваша система правильно настроена для использования D-Bus. Иногда настройки конфигурации могут быть неверными, и D-Bus может не получать необходимые разрешения для работы. Это может потребовать проверки системных журналов с помощью команды:

    journalctl -xe

    Обратите внимание на любые сообщения об ошибках, связанные с D-Bus, и устраните их.

  5. Перезагрузка системы (если необходимо):
    Если предыдущие шаги не помогли решить проблему, рассмотрите возможность перезагрузки системы после установки dbus и его конфигурации. Это может помочь активировать все необходимые службы и настройки.

Следуя вышеуказанным шагам, вы должны окончательно решить проблему с подключением к D-Bus через hostnamectl на вашей системе Debian 9.4. Если у вас возникают дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...