Состав установленного приложения#

Команда aft-flatpak-sbom собирает состав ПО установленного Flatpak-приложения. Она разбирает приложение вместе со связанной средой выполнения и охватывает не только deb-пакеты.

Как это применяется#

Состав собирается по идентификатору приложения:

aft-flatpak-sbom org.gimp.GIMP

По умолчанию результат пишется в текущий каталог в файл вида <идентификатор>.cdx.json.

Отдельный запуск нужен не всегда: приложение, собранное инструментом aft-app, уже несёт состав ПО внутри себя, в /app/share/sbom/ (см. Формат и использование). Команда пригодится, когда приложение собрано не инструментами AFT, когда состав нужно получить в другом месте или пересобрать по текущему содержимому песочницы.

Опции#

  • --output <путь> (или -o) - путь к выходному файлу.

  • --path <путь> (-p) - собрать состав для конкретного пути установки; полезно для приложений с несколькими ветками.

  • --list (-l) - вывести список установленных приложений и выйти.

  • --verbose (-v) - подробный вывод.

  • --quiet (-q) - тихий режим: при успехе печатается только путь к готовому файлу. Удобно в скриптах.

  • --help (-h) - справка.

OUT=$(aft-flatpak-sbom -q org.gnome.Calculator)

Откуда берутся сведения о составе#

Состав приложения собирается из нескольких источников внутри песочницы, поэтому покрывает больше, чем один лишь список пакетов. Источники просматриваются по надёжности, и более надёжные перекрывают менее надёжные:

  • Готовые файлы состава ПО, уже вложенные в сборку.

  • Сборочный манифест (flatpak-builder или buildstream) с версиями, ссылками на исходники, контрольными суммами и применёнными патчами.

  • Debian changelog - имя, версия и сопровождающий пакета.

  • Desktop-файлы - сведения о самом приложении.

  • Описание Flatpak-приложения - запасной источник, гарантирующий, что приложение попадёт в состав даже при нехватке прочих данных.

  • Версии из исполняемых файлов и идентификаторы их сборки.

  • Метаданные пакетов Python.

  • Имена файлов библиотек, по которым можно определить название и версию.

Объединение приложения и среды#

Команда разбирает и приложение, и связанную с ним среду выполнения. Компоненты, найденные в обоих, объединяются и не дублируются: близкие записи с одинаковым именем сводятся к одной, а сведения из разных источников дополняют друг друга. В составе у каждого компонента помечается, относится он к приложению или к среде выполнения.

Если по компоненту не удаётся определить версию или лицензию, соответствующее поле в составе опускается. О структуре итогового документа - в блоке Формат и использование.