OpenWRT: Tworzenie pakietów dla skryptów lub stron WWW

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 Jozwiak 
Architecture: 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

Dodaj komentarz