Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Исходная статья: Пример. Создание проекта с QML в QtCreator и сборка deb-пакета для Astra Linux

warning Удалить этот текст по окончании!
Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8);
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7);
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7).

Общие сведения

В данной статье приведен порядок сборки deb-пакета из проекта, созданного в среде разработки Qt Creator, с последующей установкой собранного deb-пакета и запуском установленной программы. В качестве примера используется готовый демонстрационный проект, который может быть использован в качестве шаблона для разработки.

Подготовка рабочего места

На рабочем месте должны быть соблюдены следующие условия:

  • рабочее место функционирует под управлением ОС Astra Linux 1.7.5 на уровне защищенности «Усиленный» или «Максимальный»;

  • создана учетная запись с правами администратора, от имени которой будет происходить создание проекта и сборка пакета;

  • отключена блокировка трассировки ptrace.

Подготовка проекта в Qt Creator

Общие сведения

Демонстрационный проект

При описании порядка сборки deb-пакета в качестве примера используется демонстрационный проект Qt Creator, который также можно использовать как шаблон для разработки на Qt. Архив с проектом доступен по ссылке https://disk.astralinux.ru/s/kSrtg5JKnzmeGdn.Для работы в Qt Creator был создан демонстрационный проект, который может использоваться как шаблон для разработчиков на Qt.

Демонстрационный проект написан на языках C++ и QML. Демонстрационный проект обладает следующим функционаломпредоставляет следующие функциональные возможности:

  • загрузка разных страниц с текстом и картинками;

  • светлая/темная тема;

  • загрузка файлов локализации.

Информация

В демонстрационном проекте используется библиотека Qt-5.15.x и базовые модули Qt. Для более сложных проектов необходимо использовать дополнительные библиотеки и компоненты, например KDE Frameworks и Kirigami UI Framework.

Подготовка репозиториев

Для установки необходимых для сборки пакетов должны быть подключены В файле /etc/apt/sources.list должны быть указаны следующие репозитории:

панель
Tabs Container
directionhorizontal
Tabs Page
title1.7
Блок кода
deb http
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free 
deb http
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/
 1.7
 1.7_x86-64 main contrib non-free
Tabs Page
title1.8
Блок кода
deb https://download.astralinux.ru/astra/frozen/1.8_x86-64/1.8.1/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
deb https://download.astralinux.ru/astra/frozen/1.8_x86-64/1.8.1/main-repository/ 1.8_x86-64 main contrib non-free
 non-free-firmware

Для проверки можно отобразить содержимое Убедиться, что нужные репозитории подключены, можно выводом содержимого файла /etc/apt/sources.list командой, выполнив команду:

Command

cat /etc/apt/sources.list

Если в выводе команды данных репозиториев нет, необходимо добавить указать их в , отредактировав файл /etc/apt/sources.list.

Убедившись, что Указав нужные репозитории подключены, необходимо обновить список пакетов командой, выполнив команду:

Command

sudo apt update

Установка Qt и Qt Creator

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

Command

sudo apt install qt5-default
sudo apt install clang cmake
sudo apt install qtdeclarative5-dev qtquickcontrols2-5-dev qttools5-dev
sudo apt install qtcreator

Сборка проекта

Для того чтобы собрать демонстрационный проект, необходимо:

  • скачать архив с проектом по ссылке https://disk.astralinux.ru/s/kSrtg5JKnzmeGdn;
  • распаковать архив с проектом в отдельный каталог;
  • запустить Qt Creator — в меню меню Пуск выбрать Разработка — Qt Creator;

  • в главном окне программы в меню выбрать Файл — Открыть файл или проект;

  • в открывшемся окне найти навигации перейти в каталог проекта и , выбрать файл CmakeLists.txt, затем и нажать [Открыть]. В окне программы будет отображено дерево каталогов и файлов проекта;

  • запустить сборку проекта —  в главном окне программы в меню выбрать Сборка — Запустить или нажать комбинацию клавиш <Ctrl+R>.

По окончании сборки в каталоге проекта будет создана структура каталогов и файлов, необходимых для сборки deb-пакета (см. Сборка deb-пакета

Условия сборки

).

Якорь
Сборка deb-пакета
Сборка deb-пакета

может осуществляться несколькими способами:
  • на отдельном компьютере (с использованием chroot-окружения);

  • в контейнерах;

  • Сборка deb-пакета

    Условия сборки пакета

    в виртуальных машинах.

    Перед началом сборки пакета должны быть установлены следующие пакеты:

    • dpkg-dev — набор инструментов для работы с исходными файлами;

    • devscripts — набор сценариев для сборки пакета;

    • equivs — необходим для запуска инструмента mk-build-deps для установки зависимых пакетов.

    Для Необходимые для сборки пакета необходимы следующие каталоги и файлы имеют следующую структуру:

    • astra-sample-app-0.1.2 — каталог, название которого соответствует названию и версии собираемого пакета;
    • astra-sample-app-0.1.2/debian — каталог с нужными для сборки файлами, содержащий файлы:
      • controlосновной файл с описанием , содержащий описание собираемого пакета и его зависимостей;

      • changelog — файл с описанием , содержащий описание истории изменения пакета;

      • rules — файл с правилами , содержащий правила компиляции пакета во время его сборки.

    Каталог astra-sample-app-0.1.2/debian также содержит следующие файлы:

    • postinstскриптсценарий, запускаемый после установки пакета;
    • postrmскриптсценарий, запускаемый после удаления пакета;
    • preinstскриптсценарий, запускаемый перед установкой пакета;
    • prermскриптсценарий, запускаемый перед удалением пакета.

    Для сборки пакета под конкретные версии различных дистрибутивов Linux удобнее всего ОС рекомендуется использовать отдельные chroot-окружения.

    Информация

    chroot-окружение позволяет

     запустить Linux внутри Linux, например, запустить архитектуру

    запустить гостевую ОС, предназначенную для одной процессорной архитектуры, например arm64 (aarch64)

    под архитектурой

    , в  хостовой ОС, предназначенной для другой процессорной архитектуры, например amd64 (x86_64).

    Примеры скриптовсценариев, автоматически настраивающих chroot-окружения сборки для Astra Linux под архитектуры процессорных архитектур amd64 (x86_64) и arm64 (aarch64), можно найти расположены в каталоге каталоге astra-sample-app/linux.

    Далее рассмотрена ручная настройка В данной статье приведено описание ручной настройки окружения сборки с использованием инструмента debootstrap.

    Установка

    Инструмент debootstrap

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

    Command

    sudo apt install debootstrap qemu-user-static

    Для создания окружения сборки используется команда следующего вида:

    Command

    sudo debootstrap --arch=<архитектура> --components=<компоненты> <кодовое_имя_репозитория> <название_каталога_chroot> <ссылка_на_репозиторий>

    Подготовка окружения сборки

    панель
    Tabs Container
    directionhorizontal
    Tabs Page
    titleСборка для amd64

    Подготовка окружения сборки выполняется в следующем порядке:

    • выполнить команду создания chroot-окружения:
      Command

      sudo debootstrap --arch=amd64 --components=main,contrib,non-free 1.7_x86-64 chroot-amd64 http://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/

    • в файл chroot-amd64/etc/apt/sources.list добавить репозитории:
      панель
      Tabs Container
      directionhorizontal
      Tabs Page
      title1.7
      Блок кода
      deb 
      http
      https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free
      deb 
      http
      https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free
      Tabs Page
      title1.8
      Блок кода
      deb https://download.astralinux.ru/astra/frozen/1.8_x86-64/1.8.1/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
      deb https://download.astralinux.ru/astra/frozen/1.8_x86-64/1.8.1/main-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
    • выполнить команды для подготовки каталога сборки:
      Command

      echo "export LC_ALL=C" | sudo tee -a chroot-amd64/root/.bashrc
      sudo chroot chroot-amd64 apt update
      sudo chroot chroot-amd64 apt install devscripts quilt equivs
      sudo chown -R "${USER}:${USER}" chroot-amd64/opt/

    Tabs Page
    titleСборка для arm64

    Подготовка окружения сборки выполняется в следующем порядке:

    • выполнить команду создания chroot-окружения:
      Command

      sudo debootstrap --arch=arm64 --components=main,contrib,non-free 4.7_arm chroot-arm64 http://download.astralinux.ru/astra/stable/4.7_arm/repository-base/

    • в файл chroot-amd64/etc/apt/sources.list добавить репозитории:
      Блок кода
      deb httphttps://download.astralinux.ru/astra/stable/4.7_arm/repository-base/ 4.7_arm main contrib non-free
      deb httphttps://download.astralinux.ru/astra/stable/4.7_arm/repository-extended/ 4.7_arm main contrib non-free
    • выполнить команды для подготовки каталога сборки:
      Command

      echo "export LC_ALL=C" | sudo tee -a chroot-arm64/root/.bashrc
      sudo chroot chroot-arm64 /debootstrap/debootstrap --second-stage
      sudo chroot chroot-arm64 apt update
      sudo chroot chroot-arm64 apt install devscripts quilt equivs
      sudo chown -R "${USER}:${USER}" chroot-arm64/opt/ 

    Сборка пакета

    панель
    Tabs Container
    directionhorizontal
    Tabs Page
    titleСборка для amd64

    Сборка пакета выполняется в следующем порядке:

    • выполнить команды монтирования каталогов в каталог сборки:
      Command

      sudo mount -t proc proc chroot-amd64/proc
      sudo mount -t sysfs sys chroot-amd64/sys
      sudo mount -t devpts devpts chroot-amd64/dev/pts
      sudo mount -o bind /dev/shm chroot-amd64/dev/shm

    • скопировать каталог проекта в каталог chroot-amd64/opt и перейти в chroot-окружение, выполнив команды:
      Command

      cp -a astra-sample-app-0.1.2 chroot-amd64/opt/
      sudo chroot chroot-amd64

    • выполнить команды сборки пакета:
      Command

      cd /opt/astra-sample-app-0.1.2
      mk-build-deps -i -r
      dpkg-buildpackage -us -uc -ui -j$(nproc)

    Собранный пакет будет расположен в каталоге chroot-amd64/opt.

    Если есть необходимость очистить окружение сборки, выполнить команды:

    Command

    dpkg -l | grep build-deps
    apt purge '*build-deps*'
    apt autoremove --purge

    После сборки пакета необходимо размонтировать каталоги, выполнив команды:

    Command

    sudo umount chroot-amd64/proc
    sudo umount chroot-amd64/sys
    sudo umount chroot-amd64/dev/pts
    sudo umount chroot-amd64/dev/shm

    Tabs Page
    titleСборка для arm64

    Сборка пакета выполняется в следующем порядке:

    • выполнить команды монтирования каталогов в каталог сборки:
      Command

      sudo mount -t proc proc chroot-arm64/proc
      sudo mount -t sysfs sys chroot-arm64/sys
      sudo mount -t devpts devpts chroot-arm64/dev/pts
      sudo mount -o bind /dev/shm chroot-arm64/dev/shm

    • скопировать каталог проекта в каталог chroot-arm64/opt и перейти в chroot-окружение, выполнив команды:
      Command

      cp -a astra-sample-app-0.1.2 chroot-arm64/opt/
      sudo chroot chroot-arm64

    • выполнить команды сборки пакета:
      Command

      cd /opt/astra-sample-app-0.1.2
      mk-build-deps -i -r
      dpkg-buildpackage -us -uc -ui -j$(nproc)

    Собранный пакет будет расположен в каталоге chroot-arm64/opt.

    Если есть необходимость очистить окружение сборки, выполнить команды:

    Command

    dpkg -l | grep build-deps
    apt purge '*build-deps*'
    apt autoremove --purge

    После сборки пакета необходимо размонтировать каталоги, выполнив команды:

    Command

    sudo umount chroot-arm64/proc
    sudo umount chroot-arm64/sys
    sudo umount chroot-arm64/dev/pts
    sudo umount chroot-arm64/dev/shm

    Установка deb-пакета

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

    Command

    sudo apt install ./astra-sample-app_0.1.2_amd64.deb

    Запуск программы

    панель
    Tabs Container
    directionhorizontal
    Tabs Page
    title1.7/4.7

    Запуск программы

    Запуск программы выполняется

    выполняется одним из следующих способов:

    • через меню Пуск — Утилиты — Astra Sample App;
    • из терминала — выполнить команду:

      Command

      astra-sample-app

    Запуск программы в режиме «Мобильный» выполняется следующим образом:

    • вызвать экран приложений — коснуться нижней части экрана и провести пальцем вверх;
    • на экране приложений в разделе Мобильные коснуться значка программы «Astra Sample App».
    Tabs Page
    title1.8

    Запуск программы выполняется одним из следующих способов:

    • через меню Пуск — Программы — Научные — Astra Sample App;
    • через классическое меню Пуск —
    Утилиты
    • Научные — Astra Sample App;
    • из терминала — выполнить команду:

      Command

      astra-sample-app

    Запуск программы в режиме

    «Мобильный»

    «Мобильный» выполняется следующим образом:

    • вызвать экран приложений — коснуться нижней части экрана и провести пальцем вверх;
    • на экране приложений в разделе Мобильные коснуться значка программы «Astra Sample App».