Когда я пытаюсь создать новую systemd единицу (на Ubuntu 16.04)
$ sudo systemctl edit --user --full --force wagoOpenhabBridge.service
Failed to connect to bus: No such file or directory
Кроме этой проблемы хорошо работает мой systemd.
После некоторого интернет-исследования я проверил эти вещи:
Переменные XDG в ENV
XDGSESSIONID=1790
XDGDATADIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
XDGRUNTIMEDIR=/run/user/1000
Какие-либо идеи, что идет не так, как надо? Что другие вещи я могу проверить?
dbus
пакет установлен?
Я заметил подобную проблему при выполнении systemctl show $UNIT
как пользователь, с соединением, предпринятым на /var/run/dbus/system_bus_socket
который только существует если dbus-daemon --system
работает, которому самостоятельно нужно dbus
пакет, который будет установлен.
Можно заняться расследованиями далее при помощи strace
для проверки, какие syscalls выполняются и определяют который точные проблемы это Неудавшееся для соединения с шиной: Никакой такой файл или каталог не о. Даже если, не пытаясь получить доступ к системной шине, это, вероятно, будет связанная D-шина.
Ваш systemd
пакет мог бы иметь dbus
в Recommends
(это имеет место в Debian 9, по крайней мере); проверка их является обычно хорошей идеей, когда что-то не работает как ожидалось.
Я просто столкнулся с подобной проблемой, она была вызвана путем попытки выполнить сервис как пользователя, я не был зарегистрирован с (у этого пользователя есть вход в систему, отключают, и я использовал su
и sg
фальсифицировать его).
sudo
?Вы, вероятно, добавили sudo
потому что команда не работала, можно безопасно удалить ее. Пользователь systemd сервис является регулярным файлом, принадлежавшим обычному пользователю.
Failed to connect to bus: No such file or directory
Я нашел решение на stackexchange, DBUS_SESSION_BUS_ADDRESS
кажется, отсутствует в Вашей среде.
Ваша команда может быть выполнена как это:
export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
systemctl edit --user --full --force wagoOpenhabBridge.service
Если Вы хотите, чтобы сервис был запущен перед пользовательским входом в систему, не забывайте работать:
sudo loginctl enable-linger USERNAME
Решение: установить пакет dbus-user-session
(sudo apt install dbus-user-session
), перезагрузить компьютер и снова войти в систему.