Добавление приложений в Termidesk Live
Общие сведения
Termidesk Live поддерживает добавление приложений в ОС посредством файловой системы overlay, при этом первоначальный образ Termidesk Live не меняется. Приложения, необходимые пользователю для работы, добавляются на этапе загрузки образа через опрос NFS-сервера, который должен функционировать в сетевой инфраструктуре.
Для добавления приложений должно выполняться следующее:
-
все целевые устройства (компьютер, тонкий клиент и др.) должны находиться в одной локальной сети (в одном широковещательном домене);
-
в этой сети должны быть:
-
настроенный DHCP-сервер, выдающий клиентским компьютерам не только сетевые IP-адреса, но и другие сетевые параметры, в частности, IP-адрес NFS-сервера и опцию «appimage». Настройка опции «appimage» приведена ниже;
Работа функционала проверена с программными DHCP-серверами. С аппаратными комплексами DHCP-серверов работа функционала будет затруднена, поскольку в большинстве случаев такие DHCP-серверы поддерживают только назначение IP-адресов и не поддерживают передачу других сетевых параметров. -
настроенный NFS-сервер, на котором выполнены дополнительные действия, приведенные ниже;
-
разделяемые сетевые ресурсы NFS-сервера, используемые для хранения приложений. Настройка сетевых ресурсов приведена ниже.
-
Порядок работы:
-
целевое устройство с образом Termidesk Live подключается к сети и запрашивает IP-адрес, передавая в запросе информацию о собственной конфигурации;
-
DHCP-сервер назначает целевому устройству IP-адрес и вместе с назначенным адресом передает ему дополнительные сетевые параметры, в том числе IP-адрес NFS-сервера и значение опции «appimage»;
|
Образ Termidesk Live поставляется с уже настроенным функционалом поддержки получения IP-адреса от DHCP-сервера. Если целевое устройство с образом Termidesk Live имеет два и более сетевых интерфейса с автоматическим получением параметров от DHCP-сервера, для поиска NFS-сервера будет использоваться первый интерфейс. В текущей версии Termidesk Live не предусмотрена парольная или какая-либо иная аутентификация при монтировании каталога с NFS-сервера. |
-
целевое устройство с образом Termidesk Live подключается к указанному в опции «appimage» NFS-серверу и каталогу и монтирует его в ОС Termidesk Live;
-
после завершения загрузки Termidesk Live приложения, которые были размещены в каталоге на NFS-сервере, отображаются на рабочем столе ОС Termidesk Live.
Дополнительная настройка существующего DHCP-сервера
Дополнительная настройка существующего DHCP-сервера сводится к редактированию конфигурационного файла dhcpd.conf, а именно:
-
в файле обязательно должна быть указана опция
appimageс кодом155и значениемtext:
Получение опции appimage с кодом 155 и значением text предопределено в образе Termidesk Live, использование других значений опции не предусмотрено.
|
option appimage code 155 = text;
-
в файле обязательно должен быть указан NFS-сервер, например:
host nfs-server { hardware ethernet 08:00:27:be:4a:f0; fixed-address 192.0.2.1; }
-
в файле обязательно присвоить опции
appimageпуть к каталогу на NFS-сервере, из которого Termidesk Live будет получать приложения:
option appimage "192.0.2.1:111:2049:/nfs";
Где:
192.0.2.1 - IP-адрес NFS-сервера;
111 - порт регистрации удаленных вызовов процедур (RPC);
2049 - порт для подключения к NFS-серверу;
/nfs - путь к каталогу на NFS-сервере для монтирования.
Пример файла dhcpd.conf:
| Приведен только пример файла! Настройки DHCP-сервера и IP-адреса должны быть заменены на актуальные, используемые согласно схеме адресации, принятой в инфраструктуре организации. |
option appimage code 155 = text;
subnet 192.0.2.0 netmask 255.255.255.0 {
host nfs-server { hardware ethernet 08:00:27:be:4a:f0; fixed-address 192.0.2.1; }
option routers 192.0.2.2;
option subnet-mask 255.255.255.0;
range 192.0.2.10 192.0.2.255;
default-lease-time 600;
max-lease-time 1800;
option appimage "192.0.2.1:111:2049:/nfs";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
Дополнительная настройка существующего NFS-сервера
Дополнительная настройка существующего NFS-сервера сводится к:
-
созданию обязательного каталога, указанного в опции
appimage, в котором будут размещаться приложения (/nfs):
sudo mkdir /nfs
-
созданию подкаталога
appimageв указанном каталоге (/nfs/appimage) для хранения файлов разрешения.AppImage:
sudo mkdir /nfs/appimage
-
созданию подкаталога
menuв указанном каталоге (/nfs/menu) для хранения конфигурационных файлов:
sudo mkdir /nfs/menu
-
созданию подкаталога
imagesв каталогеappimage(/nfs/appimage/images) для хранения изображений (иконок) приложений:
sudo mkdir /nfs/appimage/images
После создания каталогов они должны быть наполнены соответствующим образом:
-
в корень каталога
/nfs/appimageнеобходимо поместить непосредственно приложения в формате.AppImage;
|
Файлам
|
-
в каталог
/nfs/appimage/imagesнеобходимо поместить изображения; -
в каталог
/nfs/menuнеобходимо поместить конфигурационные файлы, соответствующие.AppImage, содержащие описание размещения приложения на рабочем столе Termidesk Live. Пример конфигурационного файла/nfs/menu/Application:
needs="x11"; title="Application"; icon="/nfs/appimage/images/Application.png"; command="/nfs/appimage/Application-x86_64.AppImage";
Создание приложений формата AppImage
Для создания приложений формата .AppImage может использоваться исполняемый файл appimage-builder.sh. Преобразование приложений должно выполняться на любом узле, отличном от Termidesk Live и на котором возможно разрешение зависимостей, приведенных ниже.
Действия для подготовки к использованию appimage-builder.sh:
| Все перечисленные в этом подразделе действия должны выполняться на ОС, отличной от ОС Astra Linux Special Edition, например: Alpine Linux, Debian. |
-
скачать утилиту
appimagetool:https://github.com/AppImage/appimagetool/releases. Поместить в любую директорию, например,/home/user/; -
скачать среду выполнения runtime:
https://github.com/AppImage/type2-runtime/releases. Поместить в любую директорию, например,/home/user/; -
установить пакеты
rpm2cpioиcpio; -
установить пакет
binutils; -
назначить флаг исполнения для загруженных утилит
appimagetool-x86_64.AppImageиruntime-x86_64:
chmod +x /home/user/appimagetool-x86_64.AppImage /home/user/runtime-x86_64
-
создать каталог
appimage-builder:
mkdir /home/user/appimage-builder
-
скопировать в него файл
appimage-builder.shи сделать его исполняемым:
chmod +x /home/user/appimage-builder/appimage-builder.sh
-
создать каталог приложения
appsс подкаталогом наименования приложения (в примерах используетсяicaclient):
mkdir -p /home/user/appimage-builder/apps/icaclient
-
создать в каталоге
/home/user/appimage-builder/apps/icaclientфайлsourcesи внести в него все зависимости приложения, пример:
http://security.debian.org/debian-security/pool/updates/main/w/webkit2gtk/libwebkit2gtk-4.0-37_2.42.5-1~deb12u1_amd64.deb
http://security.debian.org/debian-security/pool/updates/main/w/webkit2gtk/libjavascriptcoregtk-4.0-18_2.42.5-1~deb12u1_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/i/icu/libicu72_72.1-3_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/g/gst-plugins-bad1.0/libgstreamer-plugins-bad1.0-0_1.22.0-4+deb12u5_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.1.5-2_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/liba/libavif/libavif15_0.11.1-1_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/libm/libmanette/libmanette-0.2-0_0.2.6-3+b1_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/d/dav1d/libdav1d6_1.0.0-2_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/libg/libgav1/libgav1-1_0.18.0-1+b1_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/r/rust-rav1e/librav1e0_0.5.1-6_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/s/svt-av1/libsvtav1enc1_1.4.1+dfsg-1_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/a/aom/libaom3_3.6.0-1_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/liby/libyuv/libyuv0_0.0~git20230123.b2528b0-1_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/a/abseil/libabsl20220623_20220623.1-1_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/g/gcc-12/libstdc++6_12.2.0-14_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.74.6-2_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/libs/libselinux/libselinux1_3.4-1+b6_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/libf/libffi/libffi8_3.4.4-1_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/g/gstreamer1.0/libgstreamer1.0-0_1.22.0-2_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/g/gst-plugins-base1.0/libgstreamer-plugins-base1.0-0_1.22.0-3+deb12u1_amd64.deb
http://ftp.ru.debian.org/debian/pool/main/g/gst-plugins-base1.0/libgstreamer-gl1.0-0_1.22.0-3+deb12u1_amd64.deb
-
в каталоге приложения (в примере -
icaclient) создать подкаталогfiles:
mkdir /home/user/appimage-builder/apps/icaclient/files
-
поместить в подкаталог
filesфайлы для запуска.AppImage, а именно:-
изображение приложения в формате
.png; -
конфигурационный файл формата
.desktop, содержащий информацию о запуске приложения, пример:[Desktop Entry] Version=1.0 Type=Application Name=Citrix Workspace Icon=receiver Categories=Network; Exec=opt/Citrix/ICAClient/selfservice --icaroot opt/Citrix/ICAClient -
исполняемый файл
AppRun, содержащий основную команду запуска приложения, пример:#!/bin/sh export LD_LIBRARY_PATH="lib/x86_64-linux-gnu;lib;lib64;usr/lib;usr/lib/x86_64-linux-gnu;" readlink_file() { next_path=$1 i=0 while [ "$i" != 10 ] && [ "x$next_path" != "x$path" ]; do path=$next_path next_path=$(readlink "$path" || echo $path) ((++i)) done echo "$path" } basedir() { file=$(readlink -f "$1") || $(readlink_file "$1") echo $(cd "$(dirname "$file")" && pwd -P) } cd "$(basedir "$0")" && LD_PRELOAD=usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 opt/Citrix/ICAClient/selfservice --icaroot opt/Citrix/ICAClientЕсли приложение необходимо модифицировать, применить к нему патч, то это возможно сделать, создав исполняемый файл
build.sh.Build.shдолжен содержать в себе необходимые инструкции по модификации и должен быть скопирован в каталог приложения, в примерах это/home/user/appimage-builder/icaclient.
-
-
убедиться, что структура каталога приложения (в примере -
icaclient) соответствует следующей:
appimage-builder/icaclient
├── build.sh (необязательный файл)
├── files
│ ├── AppRun
│ ├── icaclient.desktop
│ └── icaclient.png
└── sources
После выполнения всех перечисленных действий по подготовке среды выполнения можно перейти к формированию файлов .AppImage:
-
перейти в каталог
appimage-builder:
cd /home/user/appimage-builder/
-
запустить исполняемый файл
appimage-builder.sh, указав приложение, для которого необходимо сформировать.AppImage(в примере -icaclient), и инструменты сборки:
./appimage-builder.sh --appimage-tool /home/user/appimage-builder/appimagetool-x86_64.AppImage --appimage-runtime /home/user/appimage-builder/runtime-x86_64 icaclient
Если среда выполнения была подготовлена правильно, то appimage-builder.sh автоматически создаст каталог AppImages в домашнем каталоге пользователя и поместит в него после сборки файлы .AppImage и журнал сборки. В качестве временного каталога используется
/tmp/.
Список всех параметров, поддерживаемых исполняемым файлом appimage-builder.sh, приведен в
на таблице (см. таблицу Список параметров для appimage-builder.sh).
| Параметр | Описание |
|---|---|
|
Вызов справки |
|
Вывод текущей версии |
|
Путь к инструменту сборки appimagetool |
|
Путь к инструменту среды выполнения runtime |
|
Каталог с файлами исходных пакетов ( |
|
Каталог для сохранения собранных файлов |
|
Каталог с загруженными пакетами зависимостей. Задание параметра избавляет от необходимости повторной загрузки пакетов, указанных в |
|
Каталог для сохранения журнала сборки |