Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Что-то теряется в окружении и возникает ошибка Unable to get the session bus  (Прочитано 630 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11895
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Собственно речь про индикатор что в подписи.

Хочу сделать автоматический перезапуск индикатора после обновления (через postinst скрипт DEB-пакета).

Обновление пакета ведется под рутом (sudo или gksu).

В скрипте я нахожу запущенные индикаторы и запоминаю пользователей под которыми они запущены.
Далее киляю все индикаторы
После чего в цикле, для каждого запомненного пользователя я делаю su/sudo в пользователя и под ним запускаю индикатор.

После чего получаю две ошибки:
(yandex-disk-indicator:19676): libappindicator-WARNING **: Unable to get the session bus: Не удалось подключиться к: В соединении отказано

(yandex-disk-indicator:19676): LIBDBUSMENU-GLIB-WARNING **: Unable to get session bus: Не удалось подключиться к: В соединении отказано

Т.е. индикатору и его меню не зацепиться за dbus сессию.

Собственно можно делать и без циклов
stc@stc-nb:~$ yandex-disk-indicator&           
[1] 19909                                    # тут индикатор успешно запустился
stc@stc-nb:~$ pkill yd-tools                 # я его прибил, что бы он мне не мешал запустить его еще раз
stc@stc-nb:~$ sudo -s                        # делаюсь рутом
root@stc-nb:~# sudo -u stc -s                # делаюсь из под рута обратно собой (stc)
stc@stc-nb:~$ yandex-disk-indicator          # запускаю индикатор

(yandex-disk-indicator:19983): libappindicator-WARNING **: Unable to get the session bus: Не удалось подключиться к: В соединении отказано

(yandex-disk-indicator:19983): LIBDBUSMENU-GLIB-WARNING **: Unable to get session bus: Не удалось подключиться к: В соединении отказано


Пробовал с su --login - та же петрушка выходит.

Как я предполагаю (возможно ошибочно) при двукратной смене пользователя теряется что-то в окружении и dbus посылает нафиг libappindicator - библиотеку через которую и создается индикатор на панели.

Кто знает - куда копать? :idiot2:
« Последнее редактирование: 27 Июль 2016, 01:25:51 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11895
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Во продифил два енвайронмента (тот что рабочий и тот что глючит)

Там много чего после дабл-sudo потерялось....

Как выяснилось выстрелила переменная DBUS_SESSION_BUS_ADDRESS.

Если из рабочего окружения взять значение и выполнить в глючном export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ZictOtqgih то индикатор нормально стартует....

Вопрос остался один - как все-таки узнать dbus сессию пользователя?
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26080
    • Просмотр профиля
Скорее всего - спросить… У того же дбуса.
Либо она вообще не нужна, и это решается как-то иначе. Уменяестьтакоечувство.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11895
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Ну собственно сам спросил и сам ответ нашел  :2funny:

http://habrahabr.ru/post/126849/#comment_4183443

Значение переменных DISPLAY и DBUS_SESSION_BUS_ADDRESS лучше брать из окружения (/proc/$pid/environ) того процесса, который и перезапускается. В моем случае это процесс индикатора.

РЕШЕНО.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26080
    • Просмотр профиля
Их там может не быть… Если процесс подчищает окружение по каким-то своим причинам.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11895
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Нет, там их не может не быть - ведь там (в окружении запущенного индикатора) переменные стоят так что он успешно запустился. А сам индикатор свои переменные окружения не меняет.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

 

Страница сгенерирована за 0.119 секунд. Запросов: 24.