Создание приложений формата 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
BASH
  • создать каталог appimage-builder:

:~$ mkdir /home/user/appimage-builder
BASH
  • скопировать в него файл appimage-builder.sh и сделать его исполняемым:
:~$ chmod +x /home/user/appimage-builder/appimage-builder.sh
BASH
  • создать каталог приложения apps с подкаталогом наименования приложения (в примерах используется icaclient):

:~$ mkdir -p /home/user/appimage-builder/apps/icaclient
BASH
  • создать в каталоге /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
BASH
  • в каталоге приложения (в примере - icaclient) создать подкаталог files:
:~$ mkdir /home/user/appimage-builder/apps/icaclient/files
BASH
  • поместить в подкаталог 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
BASH
    • исполняемый файл 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
BASH

Если приложение необходимо модифицировать, применить к нему патч, то это возможно сделать, создав исполняемый файл build.sh.

Build.sh должен содержать в себе необходимые инструкции по модификации и должен быть скопирован в каталог приложения, в примерах это /home/user/appimage-builder/icaclient.

  • убедиться, что структура каталога приложения (в примере - icaclient) соответствует следующей:
appimage-builder/icaclient
├── build.sh (необязательный файл)
├── files
│   ├── AppRun
│   ├── icaclient.desktop
│   └── icaclient.png
└── sources
BASH

После выполнения всех перечисленных действий по подготовке среды выполнения можно перейти к формированию файлов .AppImage:

  • перейти в каталог appimage-builder:
:~$ cd /home/user/appimage-builder/
BASH
  • запустить исполняемый файл 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
BASH

Если среда выполнения была подготовлена правильно, то appimage-builder.sh автоматически создаст каталог AppImages в домашнем каталоге пользователя и поместит в него после сборки файлы .AppImage и журнал сборки. В качестве временного каталога используется /tmp/.

Список всех параметров, поддерживаемых исполняемым файлом appimage-builder.sh, приведен в таблице.

Список параметров для appimage-builder.sh

ПараметрОписание

--help

Вызов справки appimage-builder.sh

--version

Вывод текущей версии appimage-builder.sh

--appimage-tool

Путь к инструменту сборки appimagetool

--appimage-runtime

Путь к инструменту среды выполнения runtime

--input-path

Каталог с файлами исходных пакетов (AppRun, .desktop, .png)

--output-path

Каталог для сохранения собранных файлов .AppImage

--cache-path

Каталог с загруженными пакетами зависимостей. Задание параметра избавляет от необходимости повторной загрузки пакетов, указанных в sources

--log-path

Каталог для сохранения журнала сборки