Systemd, запуск юнитов уровня пользователя с доступом sudo

У меня есть пакет 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. (То же самое не работает с терминала).

1
задан 14 June 2016 в 03:39

1 ответ

Хорошо, мне удалось устранить проблему. Это не была проблема для начала, просто мое отсутствие знаний о сессиях 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 и другие огибающие переменные. Таким образом, когда Вы получаете подобные ошибки, проверьте свою среду, возможно, что-то важное отсутствует.

1
ответ дан 14 June 2016 в 03:39

Другие вопросы по тегам:

Похожие вопросы: