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