Рубрики
Вольер с пингвинами Программирование

VS Code (flatpak) добавление библиотек

Данная заметка освещает использование дополнительных библиотек в vs code, установленный через flatpak (в примере на Steam Deck)

На Steam Deck (SteamOS) пакет VS Code из магазина приложений Discover поставляется через Flatpak. Данная статья написана для SteamOS, но может быть применена на других Linux-дистрибутивах.

Flatpak — это система управления пакетами для Linux, разработанная для обеспечения безопасности, изоляции и портативности приложений. Она позволяет пользователям устанавливать и запускать приложения, изолированные от остальной системы, что повышает безопасность и упрощает управление зависимостями.

Ключевые особенности Flatpak включают:

  1. Изоляция приложений: каждое приложение работает в своем собственном изолированном окружении, что уменьшает риск системных ошибок и вирусных атак.
  2. Универсальность: пакеты Flatpak могут быть запущены на любом дистрибутиве Linux, устраняя проблему несовместимости различных версий ОС.
  3. Централизованные хранилища (репозитории): пользователи могут устанавливать приложения из централизованных репозиториев, таких как Flathub, что упрощает поиск и установку программ.
  4. Легкое обновление: Flatpak поддерживает автоматические и безопасные обновления приложений.
  5. Sandboxing и разрешения: Flatpak использует технологии изоляции для ограничения доступа приложений к системным ресурсам, повышая тем самым безопасность.

Эта система особенно полезна для разработчиков, которым нужно распространять свои приложения на различные дистрибутивы Linux, а также для пользователей, которые хотят иметь последние версии приложений, не завися от конкретного дистрибутива.

Библиотека GLFW3 недоступна в VS Code (flatpak) и в процессе сборки приложения возникает ошибка: ld: cannot find -lglfw: No such file or directory. Данная проблема может быть решена путем сборки библиотеки.

В терминале VS Code выполним клонирование репозитория GLFW3:

cd ~
git clone https://github.com/glfw/glfw.git
cd glfw

Далее выполним сборку библиотеки с помощью CMake:

cmake ./
make

В результате будет получен файл src/libglfw3.a, данный файл скопируем в новую директорию:

mkdir ~/.libs
cp ~/glfw/src/libglfw3.a ~/.libs/libglfw.a

Важное замечание: Обычно в дистрибутивах linux библиотека доступна в системе без цифры 3 в названии библиотеки — необходимо уточнить правильное название в вашем Makefile: либо -lglfw, либо -lglfw3. Автор использует -lglfw и, следовательно, переименовывает библиотеку.

Данная директория по умолчанию будет доступна для VS Code (flatpak), так как находится в корневой директории. Необходимо определить переменные среды LIBRARY_PATH и LD_LIBRARY_PATH, чтобы компилятор мог найти новую библиотеку.

LIBRARY_PATH используется компиляторами во время компиляции исходного кода, а LD_LIBRARY_PATH используется загрузчиком динамических библиотек в Linux и других UNIX-подобных системах.

Примечание: с заголовочными файлами можно поступить аналогично, скопировав папку ~/glfw/include в ~/.include и определив C_INCLUDE_PATH.

Данная задача имеет три пути решения:

  • выполнение команд в терминале;
  • ручное редактирование файла;
  • использование графического менеджера Flatseal.

Рассмотрим каждый из них.

Выполнение команд в терминале

Для задания переменных среды потребуется выполнить команду с правами администратора:

sudo flatpak override\
 --env=LIBRARY_PATH=/home/deck/.libs\
 --env=LD_LIBRARY_PATH=/app/lib:/home/deck/.libs \
 com.visualstudio.code

Данный способ применяет переменные среды для всех пользователей на уровне системы. Файл с переопределенными переменными среды доступен в директории /var/lib/flatpak/overrides/com.visualstudio.code

Примечание: команда является легко масштабируемой и для добавление переменной для заголовочных файлов необходимо добавить —env=C_INCLUDE_PATH=/home/deck/.include

Ручное редактирование файла

Данный способ является более ручным по сравнению с предыдущим. Пользователю доступны два варианта:

  • ~/.local/share/flatpak/overrides/com.visualstudio.code — файл в личной директории;
  • /var/lib/flatpak/overrides/com.visualstudio.code — системный файл (требуются права администратора).

Файл должен иметь следующий вид:

[Environment]
LIBRARY_PATH=/home/deck/.libs
LD_LIBRARY_PATH=/app/lib:/home/deck/.libs

Использование графического менеджера Flatseal

Flatseal — это графический менеджер разрешений для приложений, установленных через Flatpak. Это инструмент, позволяющий пользователям легко управлять доступом и разрешениями Flatpak-приложений, обеспечивая больший контроль над тем, как приложения взаимодействуют с системой и данными пользователя.

Данный графический менеджер можно установить двумя путями: через терминал или менеджер пакетов.

Первый способ через команду в терминале

flatpak install flathub com.github.tchx84.Flatseal

А также через менеджер пакетов Discover (SteamOS), пример приведен на рисунке 1.

Рисунок 1 — Установка Flatseal через Discover

В приложении Flatseal необходимо выбрать Visual Studio Code и дополнить переменные среды (секция Environment, список Variables) по аналогии с рисунком 2.

Рисунок 2 — Заполнение переменных среды VS Code в приложении Flatseal

Важное примечание: восклицательный знак в треугольнике указывает, что параметр был изменен пользователем.

Важное замечание: переменная LD_LIBRARY_PATH уже определена по умолчанию и необходимо лишь дополнить её.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Управление cookie