Маленькое вступление:
В основном пишу для себя чтобы не забыть через год
Исследование содержимого пакета
Разборка пакета
Так как на самом деле пакет ничто иное как tar.gz архив то и работать с ним можно как с обычным архивом. а именно расспаковать, запаковать просмотреть содержимое, извлечь часть файлов.
Например для расспаковки пакета с именем somepack.ipk можно выполнить следующие команды
Code:
tar -zxvf somepack.ipk
после чего в папке появятся 2 файла
data.tar.gz control.tar.gz
которые также являются архивами
data.tar.gz содержит инсталиремые файлы а control.tar.gz содержит сприпты установки и файл описания пакета.
Сборка пакета
для создания пакета ipk также можно восспользоваться архиватором tar, единственное что нужно сделать это указать упцию --format=ustar
итак например вам захотелось создать пакет somepack
для этого нужно создать файл с именем control приблизительно следующего содержания
Code:
Package: somepack
Architecture: mipsel
Priority: optional
Section: net
Version: 1.31-1
Maintainer: Vasili Pupkin
Source: ftp://ftp.domain.org/someprog.tar.gz
Description: pack descripton
Depends: zlib, libsomelibs
Suggests:
Conflicts: progmame
NB:поля Depends и Conflicts заполняются в случае если ваш пакет зависит от какого то другого пакета или конфликтует с чем то, соответственно.
далее необходимо создать в папке стпуктуру каталогов идентичную той в которую будут копироваться файлы
например
Code:
/opt
/opt/bin
/opt/etc
и разложить по этим каталогам файлы.
теперь необходимо упаковать сначала папку в которой лежит файл а за тем папку в которой находятся инсталируемые файлы например у нас имеется папка /opt/mypacks/somepak в которой находятся 2 поддиректории control и data. создаем архив control.tar.gz
Code:
cd /opt/mypacks/somepak/control
tar (завтра допишу устал :)
Установка ipk пакета
Чтобы избежать проблем с переполнением /tmp и как следствие зависание рутера, можно восспользоваться опцией -t. Например так:
Code:
ipkg install -t /opt/tmp somepackage
Чтобы скачать пакет без установки можно восспользоваться опцией
Code:
ipkg download somepackage
Прочее
Чтобы mc "понимал" ipk формат необходимо в файл расширений /opt/share/mc/mc.ext добавить следующие строки
Code:
regex/\.ipk
Open=%cd %p#utar
View=%view{ascii} gzip -dc %f 2>/dev/null | tar tvvf -