ProtonVPN не открывается в Kubuntu. После нажатия на значок GUI он продолжает загружаться и быстро закрывается.

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

Я установил protonvpn с их [официального руководства на сайте][1].
Мне удалось запустить его в первый раз, но после перезапуска kubuntu он вообще не загружается. При нажатии на приложение с графическим интерфейсом оно начинает запускаться, но быстро закрывается.
Попробовал открыть через терминал с помощью команды protonvpn-app, но терминал остается пустым.
Я попробовал запустить его от имени root “sudo protonvpn-app”, и выдало следующую ошибку:

$ sudo protonvpn-app
[sudo] пароль для akshay: 

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/secretstorage/__init__.py", line 73, in dbus_init
    connection = open_dbus_connection()
                 ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/jeepney/io/blocking.py", line 341, in open_dbus_connection
    bus_addr = get_bus(bus)
               ^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/jeepney/bus.py", line 53, in get_bus
    return find_session_bus()
           ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/jeepney/bus.py", line 42, in find_session_bus
    addr = os.environ['DBUS_SESSION_BUS_ADDRESS']
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen os>", line 685, in __getitem__
KeyError: 'DBUS_SESSION_BUS_ADDRESS'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/bin/protonvpn-app", line 33, in <module>
    sys.exit(load_entry_point('proton-vpn-gtk-app==4.9.4', 'console_scripts', 'protonvpn-app')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/vpn/app/gtk/__main__.py", line 35, in main
    controller = Controller.get(executor, exception_handler)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/vpn/app/gtk/controller.py", line 64, in get
    executor.submit(controller.initialize_vpn_connector).result()
  File "/usr/lib/python3.12/concurrent/futures/_base.py", line 456, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/usr/lib/python3/dist-packages/proton/vpn/app/gtk/controller.py", line 97, in initialize_vpn_connector
    self._connector = await self._api.get_vpn_connector()
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/vpn/core/api.py", line 60, in get_vpn_connector
    self._vpn_connector = await VPNConnector.get(
                          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/vpn/core/connection.py", line 94, in get
    await connector.initialize_state()
  File "/usr/lib/python3/dist-packages/proton/vpn/core/connection.py", line 269, in initialize_state
    state = await self._get_initial_state()
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/vpn/core/connection.py", line 257, in _get_initial_state
    if self._session_holder.session.logged_in:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/vpn/core/session_holder.py", line 80, in session
    self._session = self._proton_sso.get_default_session(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/sso/sso.py", line 195, in get_default_session
    sessions = self.sessions
               ^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/sso/sso.py", line 133, in sessions
    keyring = self._keyring
              ^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/sso/sso.py", line 114, in _keyring
    self.__keyring_backend = Keyring.get_from_factory(self.__keyring_backend_name)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/keyring/_base.py", line 49, in get_from_factory
    keyring_backend = Loader.get("keyring", class_name=backend)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/loader/loader.py", line 122, in get
    entry_is_valid = entry.cls._validate()  # pylint: disable=protected-access
                     ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/keyring_linux/secretservice/secretservice_backend.py", line 43, in _validate
    return cls._is_backend_working(SecretService.Keyring())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/proton/keyring_linux/core/keyring_linux.py", line 111, in _is_backend_working
    keyring_backend.get_password(
  File "/usr/lib/python3/dist-packages/keyring/backends/SecretService.py", line 78, in get_password
    collection = self.get_preferred_collection()
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/keyring/backends/SecretService.py", line 56, in get_preferred_collection
    bus = secretstorage.dbus_init()
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/secretstorage/__init__.py", line 79, in dbus_init
    raise SecretServiceNotAvailableException(reason) from ex
secretstorage.exceptions.SecretServiceNotAvailableException: Environment variable DBUS_SESSION_BUS_ADDRESS is unset

Пожалуйста, помогите.

Ответ или решение

Уважаемый пользователь,

Ваше сообщение описывает проблему с открытием ProtonVPN на Kubuntu, где после установки и успешного запуска приложения первый раз, при повторной попытке запуска оно закрывается практически сразу. Ошибка, которая возникает при попытке открытия через терминал с правами суперпользователя, связана с отсутствием переменной окружения DBUS_SESSION_BUS_ADDRESS. Позвольте рассмотреть эту ситуацию в деталях и предложить возможные решения проблемы.

Теория (T – Theory)

Когда приложение пытается получить доступ к системным ресурсам, оно может обращаться к определенным системным шинам или службам, таким как D-Bus — система межпроцессного взаимодействия в Unix-системах, которая позволяет приложениям обмениваться данными и вызывать взаимные функции. D-Bus обеспечивает упрощенный интерфейс для обмена данными между процессами и является неотъемлемой частью многих современных настольных окружений на базе Linux, включая KDE (в состав которого входит Kubuntu).

В вашей ситуации переменная окружения DBUS_SESSION_BUS_ADDRESS не установлена. Эта переменная обычно устанавливается автоматически при запуске сеанса графического интерфейса пользователя и указывает путь до текущей D-Bus-сессии. Если эта переменная отсутствует, приложения, зависящие от D-Bus, не могут правильно инициализироваться, что и является причиной ошибки, демонстрируемой в вашем случае.

Пример (E – Example)

Рассмотрим пример, когда пользовательская сессия неактивна или переменные окружения неправильно настроены. В таком случае запуск приложений, зависящих от системного D-Bus (например, ProtonVPN), будет приводить к появлению ошибок.

Предположим, что переменная DBUS_SESSION_BUS_ADDRESS отсутствует. В этом случае, при попытке запустить ProtonVPN из терминала, приложение не сможет подключиться к службе D-Bus, так как не будет знать, где ее искать, приводя к исключению KeyError и, в конечном итоге, к SecretServiceNotAvailableException.

Применение (A – Application)

Для диагностики и решения этой проблемы выполните следующие шаги:

  1. Проверка переменной окружения:
    Чтобы убедиться, что переменная DBUS_SESSION_BUS_ADDRESS настроена правильно, откройте терминал и выполните команду:

    echo $DBUS_SESSION_BUS_ADDRESS

    Если ответ пустой, это подтверждает, что переменная не настроена.

  2. Ручная установка переменной D-Bus:
    Если вы запускаете приложение из термина в рамках открытой графической сессии, попробуйте следующее:

    export DBUS_SESSION_BUS_ADDRESS=$(cat /proc/$(pgrep gnome-session)/environ | sed -e 's/\x00/\n/g' | grep DBUS_SESSION_BUS_ADDRESS | cut -d'=' -f2)

    Подставьте соответственный идентификатор процесса вашей активной сессии (например, pgrep kdeinit для KDE).

  3. Использование графического интерфейса:
    Убедитесь, что ваше приложение запускается именно через графическую оболочку, а не с терминала, где переменная может быть ненастроенной. Лучше избегать запуска GUI-программ с правами root, поскольку это может привести к несоответствиям сетевых или пользовательских настроек.

  4. Проверка установок и зависимостей:
    Проверьте, что все зависимости для ProtonVPN установлены корректно. Иногда обновление пакетов D-Bus или сервисов KDE может помочь. Для этого выполните:

    sudo apt update && sudo apt upgrade
  5. Перезапуск D-Bus:
    Попробуйте перезапустить систему или D-Bus-сервис, чтобы обеспечить правильное обновление всех системных переменных:

    sudo systemctl restart dbus

Если ни одно из перечисленных выше решений не исправляет проблему, советую установить VPN-клиент повторно, следуя всем инструкциям, или обратиться в поддержку ProtonVPN с подробным описанием проблемы и результатами вышеуказанных действий.

Надеюсь, это руководство окажет вам должную помощь в устранении возникшей проблемы и успешном использовании ProtonVPN на Kubuntu. Если будут дополнительные вопросы, не стесняйтесь их задавать.

С уважением,
[Ваше имя/подпись]

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

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