Самостоятельная сборка пакетов .ipk для роутеров iRZ
Операционная система роутеров iRZ позволяет расширять её возможности с помощью пакетов ipk. У такого подхода есть ряд преимуществ:
-
установить пакет может любой даже не подготовленный сотрудник организации;
-
при сбросе настроек роутера или обновлении прошивки нет необходимости заново устанавливать скрипты или настраивать дополнительный функционал руками, так как Ваш пакет будет заново установлен автоматически.
Пакет ipk является архивом, содержащим необходимые файлы и инструкции по установке / удалению того функционала, который разработан для операционной системы роутера.
Для создания собственного пакета ipk, необходимо выполнить следующие действия:
-
Скачать скрипт ipkg-build из репозитория OpenWRT на GitHub по ссылке.
-
Создать директорию с названием пакета и набором папок в соответствии со структурой, указанной ниже (см. раздел "Структура .ipk").
-
Скопировать все файлы, которые нужно установить в данную папку.
-
Проверить, что в директории CONTROL создан текстовый файл control, в котором указана вся необходимая информация(см. раздел "CONTROL").
-
Запустить на выполнение скрипт ipkg-build с указанием целевого каталога (в примере выше это /package_name ) в качестве единственного аргумента(пример: ./ipk.build package_name).
-
Ваш пакет .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