У меня есть пакет Debian, который устанавливает мое программное обеспечение, и ему нужно запустить два приложения в сценарии после установки. Первый - это демон, а второй - фоновый процесс, которым управляют с помощью systemd
. Проблема в том, что я запускаю sudo dpkg -i ...
, и он не запускает модуль пользовательского уровня со следующей ошибкой: Failed to connect to bus: No such file or directory.
Обычная практика - запускать скрипты после установки, но права sudo позволяют мне запускать мой скрипт. Может быть, я что-то упустил. Кто-то знает, как решить эту проблему?
Команда, используемая для запуска скрипта: systemctl --user start test.service
. Когда он выполняется из установщика, он фактически становится sudo systemctl --user start test.service
. (То же самое не работает с терминала).
Хорошо, мне удалось устранить проблему. Это не была проблема для начала, просто мое отсутствие знаний о сессиях DBus и как они работают. Я надеюсь, что мой ответ поможет кому-то.
, Когда Вы откроете терминал и выполнитесь systemctl --user command unit
, все будет прекрасно, но когда Вы попытаетесь сделать под sudo
или переключиться на другого пользователя, использующего su
команда, Вы перестанете работать с ошибкой, которую я имел:
Failed to connect to bus: No such file or directory.
проблема состоит в том, что systemctl
для соединения с сеансами пользователя использует dbus адрес сессии, который установлен в DBUS_SESSION_ADDRESS
огибающая переменная. Когда Вы делаете sudo
, или su
Вы получаете очень ограниченную среду, просто Вы отсутствуете DBUS_SESSION_ADDRESS
и другие огибающие переменные. Таким образом, когда Вы получаете подобные ошибки, проверьте свою среду, возможно, что-то важное отсутствует.