
Как самостоятельно создать пакет .ipk для роутеров iRZ
Пакет ipk содержит данные и управляющие файлы, упакованные в архив. При установке данные извлекаются в файловую систему, в которой установлен пакет, а управляющие файлы используются для выполнения действий до и после установки.
ipk - это архив (либо tar, либо ar, либо gzip), содержащий два архива (control.tar.gz и data.tar.gz ) и двоичный файл debian с содержимым.
Таким образом, если разархивировать существующий .ipk пакет, можно увидеть следующее:
./debian-binary ./data.tar.gz ./control.tar.gz
Структура .ipk
Ниже представлено схематичное изображение структуры пакета.
build_dir `-- package_name название пакета |-- CONTROL | |-- control обязательный | |-- preinst предустановочный скрипт | |-- postinst постустановочный скрипт | |-- prerm скрипт, выполняемый перед удалением | |-- postrm скрипт, выполняемый после удаления |-- usr | |-- sbin | |-- my_precious.1.0 | |-- my_precious.2.0 |-- etc | |-- init.d | |-- exampleagentd `-- package_version.ipk
CONTROL
В корневой директории CONTROL находятся различные файлы скриптов.
Обязательным является файл control. В нем содержится информация о пакете - имя, версия, зависимости и т.д.
Пример наполнения этого файла с обязательными полями:
Package: example_package Version: 1.3.3.7 Architecture: all Maintainer: user@domain.ru Description: This is an example IPK package
Также в директории CONTROL могут быть расположены пред- и постустановочные скрипты и скрипты, которые выполняются перед или после удаления пакета.
Эти скрипты называются соответственно preinst, postinst, prerm, postrm и выполняются на соответствующих этапах во время установки или удаления.
Они не являются обязательными.
По умолчанию эти скрипты выполняются с помощью sh, но это можно переопределить с помощью соответствующего shebang (набор символов вроде такого #! ).
Пример наполнения postinst script:
#!/bin/sh # make symlinks my_precious ln -sf /usr/sbin/my_precious.1.0 /usr/sbin/my_precious
Файлы данных
Все иные файлы и директории кроме CONTROL будут расценены как файлы данных (data).
Это могут быть исполняемые скрипты, библиотеки и т.д.
При установке пакета они будут извлечены и расположены в файловой системе.
Последовательность действий по созданию пакета .ipk
0. Скачайте утилиту ipkg-build из репозитория OpenWRT на GitHub по ссылке: https://github.com/openwrt/openwrt/blob/openwrt-19.07/scripts/ipkg-build
1. Создайте директорию на диске в соответствии со структурой, указанной выше
2. Скопируйте все файлы, которые вам нужно установить (включая структуру папок и разрешения)
3. Проверьте, что в директории CONTROL создан текстовый файл control, в котором указана вся необходимая информация
4. Убедитесь, что ваши исполняемые файлы имеют разрешения на выполнение и предназначены для правильной архитектуры.
5. Запустите в консоли ipkg-build с целевым каталогом (в примере выше это /package_name ) в качестве единственного аргумента
6. Ваш пакет .ipk соберётся
Сервис поддержки клиентов работает на платформе UserEcho