Как самостоятельно создать пакет .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).

Это могут быть исполняемые скрипты, библиотеки и т.д.

При установке пакета они будут извлечены в файловую систему в соответствии со структурой папок, которую

вы создали в пакете.


    Эта статья была полезна для 1 человека. Эта статья помогла вам?

    Сервис поддержки клиентов работает на платформе UserEcho