Как самостоятельно создать пакет .ipk для роутеров iRZ
Операционная система роутеров iRZ позволяет расширять её возможности с помощью пакетов ipk. У такого подхода есть ряд преимуществ: установить пакет может любой даже не подготовленный сотрудник организации; при сбросе настроек роутера или обновлении прошивки нет необходимости заново устанавливать скрипты или настраивать дополнительный функционал руками, так как ваш пакет будет заново установлен автоматически.
Пакет ipk является архивом, содержащим необходимые файлы и инструкции по установке/удалению того функционала, который вы разработали для операционной системы роутера.
Для создания собственного пакета ipk, необходимо выполнить следующие действия:
0. Скачайте скрипт ipkg-build из репозитория OpenWRT на GitHub по ссылке: https://github.com/openwrt/openwrt/blob/openwrt-19.07/scripts/ipkg-build.
1. Создайте директорию с названием пакета и набором папок в соответствии со структурой, указанной ниже(см. раздел "Структура .ipk").
2. Скопируйте все файлы, которые вам нужно установить в данную папку.
3. Проверьте, что в директории CONTROL создан текстовый файл control, в котором указана вся необходимая информация(см. раздел "CONTROL").
4. Запустите на выполнение скрипт ipkg-build с указанием целевого каталога (в примере выше это /package_name ) в качестве единственного аргумента(пример: ./ipk.build package_name).
5. Ваш пакет .ipk соберётся.
Структура .ipk
Ниже представлено схематичное изображение структуры пакета.
build_dir `-- package_name название пакета |-- CONTROL | |-- control обязательный файл, содержащий информацию о пакете; | |-- preinst не обязательный файл, инструкции из данного файла выполняются перед установкой пакета; | |-- postinst не обязательный файл, инструкции из данного файла выполняются после установки пакета; | |-- prerm не обязательный файл, инструкции из данного файла выполняются перед удалением; | |-- postrm не обязательный файл, инструкции из данного файла выполняются после удаления; |-- usr пример структуры файлов, | |-- sbin необходимых для работы пакета; | |-- script_1 | |-- script_2 |-- 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 и выполняются на соответствующих этапах во время установки или удаления.
Они не являются обязательными.
Пример наполнения postinst скрипта:
#!/bin/sh # make symlinks my_precious ln -sf /usr/sbin/my_precious.1.0 /usr/sbin/my_precious
Файлы данных
Все иные файлы и директории кроме CONTROL будут расценены как файлы данных (data).
Это могут быть исполняемые скрипты, библиотеки и т.д.
При установке пакета они будут извлечены в файловую систему в соответствии со структурой папок, которую
вы создали в пакете.
Сервис поддержки клиентов работает на платформе UserEcho