OpenWRT używa prostego systemu pakietów wywodzącego się z Debiana.
Tworzenie pakietu omówie na przykładzie prostego pakietu zawierającego jeden skrypt powłoki (czyli nie ma potrzeby kompliacji binarów). Podobny sposób można użyć do pakietów ston WWW itp.
Troche teorii
Pakiet ipk to tak naprawdę archiwum tar skompresowane przy pomocy gzip-a.
ziutus@ziutusBig:~/tmp/free_space$ file opencould-free-space.ipk opencould-free-space.ipk: gzip compressed data, from Unix, last modified: Mon Nov 19 16:08:02 2012
W jego skład wchodzą 3 pliki:
ziutus@ziutusBig:~/tmp/free_space$ tar -ztf opencould-free-space.ipk control.tar.gz data.tar.gz debin-binary
Plik debian-binary zawiera informację o wersji:
ziutus@ziutusBig:~/tmp/free_space$ cat debin-binary 2.0
Plik data.tar.gz zawiera pliki, które zostaną zainstalowane na docelowym systemie (proszę zwrócić uwagę na katalog, wszystko poprzedzone jest ./):
ziutus@ziutusBig:~/tmp/free_space$ tar -ztf data.tar.gz ./bin/ ./bin/free_space
Natomiat control.tar.gz zawiera jeden plik:
ziutus@ziutusBig:~/tmp/free_space$ tar -ztf control.tar.gz control
Z informacjami o pakiecie:
ziutus@ziutusBig:~/tmp/free_space$ cat control Package: opencloud-free-space Version: 1.0-0 Depends: gargoyle Provides: Source: www.unix4you.net/openwrt/ Section: admin Status: unknown ok not-installed Essential: no Priority: optional Maintainer: Krzysztof JozwiakArchitecture: all Installed-Size: 2560 Description: Small script to check the free space for openwrt
W zasadzie wszystko samo się opisuje poza jednym elementem. W pozycji Installed-Size należy podać wielkość archiwum data.tar.gz.
Zróbmy prosty pakiet
Plik data.tar.gz z charakterystyczną ścieżką utworzmy komendą:
ziutus@ziutusBig:~/tmp/free_space$ tar -zcvf data.tar.gz ./bin/*
Plik controlny mamy z punktu teoretycznego. Wystarczy stworzyć z niego pakiet:
ziutus@ziutusBig:~/tmp/free_space$ tar -zcvf control.tar.gz control
A sam pakiet:
tar -zcvf opencloud-free-space.ipk control.tar.gz data.tar.gz debin-binary
Na systemie z OpenWRT możemy teraz pakiet zainstalować:
root@lokaj:~/tmp$ opkg install opencloud-free-space.ipk Installing opencloud-free-space (1.0-0) to root... Configuring opencloud-free-space.
Status instalacji możemy sprawić sprawdzając listę pakietów:
root@lokaj:~/tmp$ opkg files opencloud-free-space Package opencloud-free-space (1.0-0) is installed on root and has the following files: /bin/free_space