Вопрос или проблема
Я установил 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)
Для диагностики и решения этой проблемы выполните следующие шаги:
-
Проверка переменной окружения:
Чтобы убедиться, что переменнаяDBUS_SESSION_BUS_ADDRESS
настроена правильно, откройте терминал и выполните команду:echo $DBUS_SESSION_BUS_ADDRESS
Если ответ пустой, это подтверждает, что переменная не настроена.
-
Ручная установка переменной 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). -
Использование графического интерфейса:
Убедитесь, что ваше приложение запускается именно через графическую оболочку, а не с терминала, где переменная может быть ненастроенной. Лучше избегать запуска GUI-программ с правамиroot
, поскольку это может привести к несоответствиям сетевых или пользовательских настроек. -
Проверка установок и зависимостей:
Проверьте, что все зависимости для ProtonVPN установлены корректно. Иногда обновление пакетов D-Bus или сервисов KDE может помочь. Для этого выполните:sudo apt update && sudo apt upgrade
-
Перезапуск D-Bus:
Попробуйте перезапустить систему или D-Bus-сервис, чтобы обеспечить правильное обновление всех системных переменных:sudo systemctl restart dbus
Если ни одно из перечисленных выше решений не исправляет проблему, советую установить VPN-клиент повторно, следуя всем инструкциям, или обратиться в поддержку ProtonVPN с подробным описанием проблемы и результатами вышеуказанных действий.
Надеюсь, это руководство окажет вам должную помощь в устранении возникшей проблемы и успешном использовании ProtonVPN на Kubuntu. Если будут дополнительные вопросы, не стесняйтесь их задавать.
С уважением,
[Ваше имя/подпись]