Этот репозиторий предоставляет шаблон для создания простых deb-пакетов
посредством сборки инструментом dpkg-buildpackage. Данный пример пакета
предназначен для установки на контроллеры Wiren Board.
Шаблон включает примеры виртуальных устройств, написанных на JavaScript,
и необходимые скрипты для сборки пакета.
В процессе создании deb-пакета используются два различных термина:
- Сборка - это предварительная подготовка файлов проекта перед упаковкой
в пакет, например перемещение файлов, кросс-компиляция и т.д.
Этим шагом вdpkg-buildpackageзанимаетсяdebhelper. - Упаковка - это процесс непосредственного создания deb-пакета из уже
готовых файлов. Этим шагом вdpkg-buildpackageзанимаетсяdpkg-deb.
Важно, что упаковка и сборка - это разные процессы. Упаковка не включает
в себя сборку, так же как сборка не включает в себя упаковку.
src/— исходные файлы JavaScript:vd-pump-1.js— пример виртуального насосаvd-wall-switch-1.js— пример виртуального настенного выключателяvd-water-meter-1.js— пример виртуального счетчика воды
debian/— файлы, необходимые для сборки пакета:changelog— лог измененийcompat— версия совместимости debhelpercontrol— метаданные пакетаrules— скрипт сборкиdirs— список директорий для созданияpostinst— скрипт, выполняемый после установки
Makefile— скрипт для установки файлов во время сборкиLICENSE— лицензия на использование программного обеспечения.gitignore— файлы и директории, игнорируемые GitJenkinsfile— конфигурация для CI/CDREADME.md— документация (настоящее руководство)
Перед сборкой пакета необходимо внести изменения в некоторые файлы:
-
Настройте исходные файлы:
- Добавьте или измените файлы в директории
src/в соответствии с вашими
потребностями
- Добавьте или измените файлы в директории
-
Измените название пакета:
- В
debian/controlзаменитеwb-packetnameна желаемое имя
пакета в поляхSourceиPackage
- В
-
Обновите информацию в changelog:
- Отредактируйте файл
debian/changelog, добавив информацию о
вашей версии пакета. Или создайте новый с помошью инструментаdch
- Отредактируйте файл
-
Отредактируйте makefile:
- Измените содержимое
Makefileв соответствии с вашими потребностями
- Измените содержимое
Убедитесь, что у вас установлены следующие пакеты:
- git - для клонирования репозитория c GitHub
- dpkg-buildpackage в пакете dpkg-dev - нужен для сборки в deb-пакет
- debhelper - его использует dpkg-buildpackage
- make - его запустит debhelper для сборки файлов
$ sudo apt update && \
sudo apt install git && \
sudo apt install dpkg-dev && \
sudo apt install debhelper && \
sudo apt install make
-
Клонируйте репозиторий:
$ git clone https://github.com/wirenboard/wb-git-template-dpkg-simple.git && \ cd wb-git-template-dpkg-simple
В процессе разработки удобно клонировать свою ветку и сразу провести установку
$ GIT_BRANCH_NAME="feature/add-template-files-first-iteration"
$ git clone -b "${GIT_BRANCH_NAME}" --single-branch "https://github.com/wirenboard/wb-git-template-dpkg-simple.git" && \
cd wb-git-template-dpkg-simple
-
Соберите пакет:
$ dpkg-buildpackage -rfakeroot -us -ucПосле успешной сборки в родительской директории появится файл
*.deb -
Отчистка сгенерированных файлов:
При сборке генерируется много файлов, которые можно удалить:
$ dpkg-buildpackage -rfakeroot -Tclean
$ sudo apt install -y ../wb-packetname_0.0.1_all.deb
После установки новые виртуальные устройства станут доступны на вашем
контроллере Wiren Board.
$ sudo apt remove wb-packetname
Для простого копирования файлов можно использовать несколько вариантов,
Makefile в данном шаблоне выбран по причине широких возможностей
и приминимости в том числе в других задачах, например при кросскомпиляции.
В данном шаблоне Makefile используется для копирования файлов из src/
в целевую директорию. Обратите внимание, что данный файл исполняется только
во время сборки пакета, он не работает при установке на машине пользователя.
Если нужно сделать что-то перед/после установки - нужно использовать
скрипты debian/postinst и тд.
Альтернативно, вместо использования Makefile вы можете использовать
файл debian/install для указания файлов и директорий для установки:
src/*.js usr/lib/wirenboard/virtual-devices/
Файл debian/postinst используется для выполнения действий после установки
пакета. В данном шаблоне он перезапускает сервис wb-rules:
#!/bin/sh
set -e
deb-systemd-invoke restart wb-rules
#DEBHELPER#
exit 0Данный проект распространяется под лицензией The WB License (MIT-WB).
Подробности доступны в файле LICENSE.