Пример проекта с QML в QtCreator и сборки deb-пакета#
Общие сведения#
В данной статье приведен порядок сборки deb-пакета из проекта, созданного в среде разработки Qt Creator
, с последующей установкой собранного deb-пакета и запуском установленной программы.
В качестве примера используется готовый демонстрационный проект, который может быть использован в качестве шаблона для разработки.
Подготовка рабочего места#
На рабочем месте должны быть соблюдены следующие условия:
рабочее место функционирует под управлением ОС ||AL|| 1.8 на уровне защищенности «Усиленный» или «Максимальный»;
создана учетная запись с правами администратора, от имени которой будет происходить создание проекта и сборка пакета;
отключена блокировка трассировки
ptrace
.
Подготовка проекта в Qt Creator#
Демонстрационный проект#
При описании порядка сборки deb-пакета в качестве примера используется демонстрационный проект Qt Creator
, который также можно использовать как шаблон для разработки на Qt.
Архив с проектом доступен по ссылке https://disk.astralinux.ru/s/kSrtg5JKnzmeGdn.
Демонстрационный проект написан на языках C++
и QML
. Демонстрационный проект предоставляет следующие функциональные возможности:
загрузка разных страниц с текстом и картинками;
светлая/темная тема;
загрузка файлов локализации.
Примечание
В демонстрационном проекте используется библиотека Qt-5.15.x
и базовые модули Qt
. Для более сложных проектов необходимо использовать дополнительные библиотеки и компоненты, например KDE Frameworks
и Kirigami UI Framework
.
Подготовка репозиториев#
В файле /etc/apt/sources.list
должны быть указаны следующие репозитории:
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
, выполнив команду:
cat /etc/apt/sources.list
Если в выводе команды данных репозиториев нет, необходимо указать их, отредактировав файл /etc/apt/sources.list
.
Указав нужные репозитории, необходимо обновить список пакетов, выполнив команду:
sudo apt update
Установка Qt и Qt Creator#
Для установки Qt
и Qt Creator
необходимо выполнить команды:
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
— в меню ;в главном окне программы в меню выбрать
;в открывшемся окне навигации перейти в каталог проекта, выбрать файл
CmakeLists.txt
и нажать Открыть. В окне программы будет отображено дерево каталогов и файлов проекта;запустить сборку проекта — в главном окне программы в меню выбрать
или нажать комбинацию клавиш Ctrl+R.
По окончании сборки в каталоге проекта будет создана структура каталогов и файлов, необходимых для сборки deb-пакета.
Сборка 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
— сценарий, запускаемый перед удалением пакета.
Для сборки пакета под конкретные версии различных дистрибутивов ОС рекомендуется использовать отдельные chroot-окружения.
Примечание
chroot-окружение позволяет запустить гостевую ОС, предназначенную для одной процессорной архитектуры, например arm64 (aarch64), в хостовой ОС, предназначенной для другой процессорной архитектуры, например amd64 (x86_64).
Примеры сценариев, автоматически настраивающих chroot-окружения сборки для процессорных архитектур amd64 (x86_64) и arm64 (aarch64), расположены в каталоге astra-sample-app/linux
.
В данной статье приведено описание ручной настройки окружения сборки с использованием инструмента debootstrap
.
Инструмент debootstrap#
Инструмент debootstrap
используется для подготовки окружения сборки. Для установки инструмента выполнить команду:
sudo apt install debootstrap qemu-user-static
Для создания окружения сборки используется команда следующего вида:
sudo debootstrap --arch=<архитектура> --components=<компоненты> <кодовое_имя_репозитория> <название_каталога_chroot> <ссылка_на_репозиторий>
Подготовка окружения сборки#
Сборка для amd64#
Подготовка окружения сборки выполняется в следующем порядке:
выполнить команду создания chroot-окружения:
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
добавить репозитории:
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
выполнить команды для подготовки каталога сборки:
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/
Сборка для arm64#
Подготовка окружения сборки выполняется в следующем порядке:
выполнить команду создания chroot-окружения:
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 https://download.astralinux.ru/astra/stable/4.7_arm/repository-base/ 4.7_arm main contrib non-free
deb https://download.astralinux.ru/astra/stable/4.7_arm/repository-extended/ 4.7_arm main contrib non-free
выполнить команды для подготовки каталога сборки:
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/
Сборка пакета#
Сборка для amd64#
Сборка пакета выполняется в следующем порядке:
выполнить команды монтирования каталогов в каталог сборки:
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-окружение, выполнив команды:
cp -a astra-sample-app-0.1.2 chroot-amd64/opt/
sudo chroot chroot-amd64
выполнить команды сборки пакета:
cd /opt/astra-sample-app-0.1.2
mk-build-deps -i -r
dpkg-buildpackage -us -uc -ui -j$(nproc)
Собранный пакет будет расположен в каталоге chroot-amd64/opt
.
Если есть необходимость очистить окружение сборки, выполнить команды:
dpkg -l | grep build-deps
apt purge '*build-deps*'
apt autoremove --purge
После сборки пакета необходимо размонтировать каталоги, выполнив команды:
sudo umount chroot-amd64/proc
sudo umount chroot-amd64/sys
sudo umount chroot-amd64/dev/pts
sudo umount chroot-amd64/dev/shm
Сборка для arm64#
Сборка пакета выполняется в следующем порядке:
выполнить команды монтирования каталогов в каталог сборки:
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-окружение, выполнив команды:
cp -a astra-sample-app-0.1.2 chroot-arm64/opt/
sudo chroot chroot-arm64
выполнить команды сборки пакета:
cd /opt/astra-sample-app-0.1.2
mk-build-deps -i -r
dpkg-buildpackage -us -uc -ui -j$(nproc)
Собранный пакет будет расположен в каталоге chroot-arm64/opt
.
Если есть необходимость очистить окружение сборки, выполнить команды:
dpkg -l | grep build-deps
apt purge '*build-deps*'
apt autoremove --purge
После сборки пакета необходимо размонтировать каталоги, выполнив команды:
sudo umount chroot-arm64/proc
sudo umount chroot-arm64/sys
sudo umount chroot-arm64/dev/pts
sudo umount chroot-arm64/dev/shm
Установка deb-пакета#
Для установки собранного пакета необходимо из каталога, в котором располагается пакет, выполнить команду:
sudo apt install ./astra-sample-app_0.1.2_amd64.deb
Запуск программы#
Запуск программы выполняется одним из следующих способов:
через меню
;через классическое меню
;из терминала — выполнить команду:
astra-sample-app
Запуск программы в режиме «Мобильный» выполняется следующим образом:
вызвать экран приложений — коснуться нижней части экрана и провести пальцем вверх;
на экране приложений в разделе Astra Sample App.
коснуться значка программы