Создание приложений (aft-app)#
Инструмент aft-app превращает deb-пакет в изолированное Flatpak-приложение. Он разбирает зависимости пакета во время выполнения, убирает то, что уже даёт среда выполнения, исправляет зашитые в файлы пути, приводит desktop-файлы и иконки к идентификатору приложения, формирует AppStream-метаданные и экспортирует результат в репозиторий. По желанию приложение подписывается и проверяется на уязвимости.
Работать можно двумя способами: задать всё флагами команды package или описать сборку в YAML-манифесте и собрать командой build. Оба способа равноценны: один и тот же набор настроек доступен и через флаги, и через манифест. Команда generate-yaml собирает манифест из флагов, поэтому удобный путь - подобрать параметры флагами, выгрузить их в манифест и дальше вести сборку через него.
Из чего состоит раздел#
Источники программы - откуда брать программу: репозиторий, локальные файлы, ссылки, архив, перенос из системы, сборка из исходников, standalone.
Предварительный анализ - предварительный разбор источника без сборки: зависимости, подбор среды выполнения, предложенные разрешения.
Зависимости - как разбираются зависимости, что берётся из среды выполнения, дополнительные и сборочные зависимости.
Разрешения песочницы - разрешения песочницы: доступ к устройствам, сети, файлам, шинам D-Bus.
Подпись, состав ПО и экспорт приложения - подпись (GPG и ГОСТ), состав ПО, поиск уязвимостей при сборке и экспорт в репозиторий.
Импорт манифестов flatpak-builder - перенос манифеста flatpak-builder на среды Astra.
Совместимость с песочницей (astra-shim) - обёртка astra-shim для программ, которые не запускаются в песочнице из-за зашитых путей и вызовов команд хоста.
Манифест приложения - полный справочник YAML-манифеста: все секции и поля, проверка манифеста.
Процесс сборки приложения - что происходит во время сборки, по шагам.
Команды#
build#
aft-app build <файл.yaml> - сборка приложения по манифесту. В одном файле
можно описать несколько приложений, разделив документы строкой ---; они
собираются по очереди. Нужны права администратора.
package#
aft-app package [опции] - сборка приложения по флагам, без файла манифеста.
Обязательны источник, команда запуска и среда выполнения (кроме standalone, где
среда создаётся автоматически). Нужны права администратора. Все флаги этой
команды разобраны в блоках Источники программы, Зависимости,
Разрешения песочницы и Подпись, состав ПО и экспорт приложения.
generate-yaml#
aft-app generate-yaml [опции] - собрать из тех же флагов, что и package,
готовый YAML-манифест и вывести его на экран или записать в файл через
--out-yaml. Сборка не выполняется, права администратора не нужны.
analyze#
aft-app analyze [опции] - разобрать источник, не выполняя сборку: показать
зависимости, подобрать среду выполнения по их покрытию и предложить разрешения
песочницы. Права администратора не нужны. Подробнее - в блоке Предварительный анализ.
import-manifest#
aft-app import-manifest <манифест> [опции] - перенести манифест
flatpak-builder на среды Astra: по каждому модулю решить, даёт ли его среда
выполнения, можно ли поставить его deb-пакетом или нужно собрать из исходников.
Результат выдаётся планом, манифестом AFT, скриптом сборки или готовой сборкой.
Права администратора не нужны. Команду можно сокращать до import. Подробнее
- в блоке Импорт манифестов flatpak-builder.
validate#
aft-app validate <файл.yaml> - проверить манифест на ошибки. Код возврата 0
означает, что ошибок нет. Что именно проверяется - в блоке Манифест приложения.
generate-manifest#
aft-app generate-manifest - открыть интерактивный генератор манифеста в
браузере. Тот же генератор вызывается глобальным флагом -G.
clean#
aft-app clean - очистить кэш сборки (по умолчанию ~/.cache/aft-app).
help#
aft-app help [команда] - справка, при необходимости по конкретной команде.
Права и журналирование#
Сборка (build и package) меняет систему и репозиторий, поэтому требует прав
администратора. Анализ источника, импорт манифеста flatpak-builder, проверка и
генерация манифеста прав администратора не требуют. Подробность вывода
настраивается флагами --verbose (или -v), --quiet (-q) и
--log-level со значениями debug, info, warn, error.