Чтобы придать законченность проекту, как правило, необходимо подготовить дистрибутив или инсталляционный пакет. В статье рассматривается путь создания deb-пакетов для проектов, написанных на qt, которые используются для установки программного обеспечения во многих популярных linux дистрибутивах, например ubuntu или debian. Deb-пакет собирается из специально подготовленной структуры каталогов, которая определена требованиями Debian Policy (http://www.debian.org/doc/debian-policy/ch-controlfields.html). Архив с расширением deb включает в себя другие архивы:
Для создания deb-пакета необходимо в некотором каталоге создать нужную иерархию/структуру файлов и запустить на выполнение dpkg -build. Можно воспользоваться утилитами, которые упрощают создание необходимой структуры файлов. Часто совместно используют debhelper и dh_make. debhelper - коллекция различных Perl скриптов, которые являются готовыми решениями задач, возникающих при создании deb-пакета:
Все программы коллекции debhelper имеют префикс dh_. dh_make разрабатывался отдельно, поэтому не содержится в наборе утилит debhelper - его нужно будет установить дополнительно. dh_make формирует из пакета с исходным кодом программы другой, который требуется для создания deb-пакета: при этом происходит копирование шаблонов всех файлов, необходимых для постройки deb-пакета из исходного кода программы. После запуска dh_make потребуется отредактировать некоторые файлы. dh_make должен быть запущен из каталога с исходным кодом вашего приложения, данный каталог должен иметь имя в формате
На уровень выше - в каталоге unix { #VARIABLES isEmpty(PREFIX) { PREFIX = /usr } BINDIR = $$PREFIX/bin DATADIR =$$PREFIX/share DEFINES += DATADIR=\\\"$$DATADIR\\\" PKGDATADIR=\\\"$$PKGDATADIR\\\" #MAKE INSTALL TARGET =
Запустить dh_make, находясь в каталоге QMAKEVERSION = $$[QMAKE_VERSION] ISQT4 = $$find(QMAKEVERSION, ^[2-9]) isEmpty( ISQT4 ) { error("Use the qmake include with Qt4.4 or greater, on Debian that is qmake-qt4"); } TEMPLATE = subdirs SUBDIRS = src
–createorig - исходный код программы будет скопирован в dh_make --createorig --single -e maintainer@email.org -c gpl
-e - используется для указания e-mail адреса разработчика (maintainer), данная информация будет содержаться в соответствующем поле файла debian/control. -c - тип лиценции, по которой будет распространяться пакет. Возможные значения: gpl, gpl2, gpl3, lgpl, lgpl2 lgpl3, artistic, apache или bsd. Данное значение является регистронезависимым, т.е. -c GPL будет означать то же самое, что и -c gpl. gpl и lgpl будут автоматически отнесены к версии 3, apache - Apache v2.0. Если потребуется изменить версию лецензии, то это можно изменить непосредственно в файле. В результате будут созданы каталоги
Файлы debian/rules и debian/control необходимо отредактировать. В файл control добавить зависимость:
В файл rules следует поместить следующий код (обратите внимание, что в самом файле каждая команда цели должна начинаться с символа табуляции, при копировании кода и его вставке в файл табуляция может быть заменена на пробелы, в этом случае будет ошибка при сборке пакета). build-Depends: debhelper (>= 7.0.50~), libqt4-dev
Следующий этап - сборка пакета. Чтобы убедиться, что внесенные изменения не повлияли на работоспособность самой программы, из каталога src нужно выполнить: #!/usr/bin/make -f APPNAME := my_app_name builddir: mkdir -p builddir builddir/Makefile: builddir cd builddir && qmake-qt4 PREFIX=/usr ../$(APPNAME).pro build: build-stamp build-stamp: builddir/Makefile dh_testdir # Add here commands to compile the package. cd builddir && $(MAKE) touch $@ clean: dh_testdir dh_testroot rm -f build-stamp # Add here commands to clean up after the build process. rm -rf builddir dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/your_appname cd builddir && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/$(APPNAME) install # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install dh_testdir dh_testroot dh_installdocs dh_installexamples dh_installman dh_link dh_compress dh_fixperms dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure
Если при компиляции проекта не возникает ошибок или все ошибки устранены, то для удаления скомпилированных двоичных файлов и приведения каталога с исходным кодом начальное состояние необходимо вызвать: qmake make
Теперь можно запускать сборку командой debuild. В процессе debuild возможно потребуется настроить gpg (GNU Privacy Guard), например, при ошибке “secret key not available” необходимо выполнить $gpg –gen-key, указав имя пользователя и e-mail те же, для которых требуется ключ при сборке пакета. Для генерации ключа может потребоваться несколько минут. После того, как пакет уже создан, можно вывести о нем некоторую информацию: dpkg -I package.deb - выведет общую информацию о пакете, включая содержимое control-файла; dpkg -c package.deb - выведет полный перечень файлов пакета. lintian -is package.deb - покажет подробную информацию о проблемах в пакете (будут проверены правильность расположения двоичных файлов, наличие man-страниц, наличие ошибок описания пакета в файле control др.). Если все проверки прошли успешно, то можно установить собранный пакет командой: make distclean
Использованные источники:
Марченко Светланаdpkg -i package.deb
Комментарии (1)
RSS свернуть / развернутьarhi37
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.