Howto:IPK Pakete erstellen
Inhaltsverzeichnis
Allgemein
Dieses Howto soll kurz erklären wie man eigene IPKs erstellen kann. Dabei gibt es mehrere Möglichkeiten. Entweder man baut das Paket automatisch mit Hilfe von Openembedded bzw. Yocto Buildsystem oder man macht dies einfach mit dem skript ipkg-build (siehe weblinks).
Erklärung des IPK-Formates
IPKs sind relativ einfach aufgebaut so dass es problemlos möglich ist mit Linux-Boardmitteln IPKs zu erstellen. Eine IPK-Datei ist ein "ar" Archiv welches mehrere Dateien enthält.
IPKG ist ein Akronym für „Itsy Package Management System" (engl., „Klitzekleines Paket Verwaltungs System“). Das Format wurde als Paketmanager für Computer mit wenigen Ressourcen entworfen. Auf folgende Punkte wurde bei der Entwicklung besonderer Wert gelegt:
- Die Kontrollprogramme selbst sind sehr klein.
- Die installierten Meta-Daten beschränken sich auf das Wichtigste.
- Die verfügbaren Pakete sind möglichst klein. Der Paketbaum soll sehr fein granuliert sein.
Pakete dieses Formats haben die Endung .ipk. Abgeleitet ist dieses Format vom Debian-Paketsystem. Es sollte kein neues System entworfen werden, sondern nur ein bestehendes auf die speziellen Ansprüche angepasst werden. Die Debian-Distribution ist auch eine der größten Linux Distributionen weltweit. Da iPKG vom Debian-Paketformat abgeleitet ist, ist es relativ leicht, bestehende Debian-Pakete ins iPKG-Format zu konvertieren. Dadurch müssen in der Regel keine neuen Pakete von Anfang an neu erstellt werden.
control.tar.gz
Notwendige Dateien
- control
- Das Controlfile enthält Informationen über Paketname, Version, Beschreibung, Abhängigkeiten etc. und sollte von der Struktur wie folgend aussehen:
Package: enigma2-skin-tollerskin Version: 1.0-20060530-r0 Description: TollerSkin for enigma2 Architecture: mipsel Section: extra Priority: optional Maintainer: skin master <skin@master.de> Homepage: http://www.beispieldomain.de/files/dreambox/7025 Depends: enigma2(>1.0cvs20060516) Source: http://www.beispieldomain.de/files/dreambox/sources
Optionale Dateien
- conffiles
- enthält den vollen Pfad zu Configdateien damit evtl. vom Benutzer veränderte Configdateien bei der Installation des Paketes nicht überschrieben werden. Dazu muss nur der absolute Pfad zu jeder Configdatei in der Datei conffiles angegeben werden (1 File pro Zeile).
/etc/init.d/streamhack /etc/streamhack.conf
- preinst
- Ein Shell Script welches vor Installation des Paketes ausgeführt wird
- postinst
- Ein Shell Script welches nach Installation des Paketes ausgeführt wird
- prerm
- Ein Shell Script welches vor Entfernen des Paketes ausgeführt wird
- postrm
- Ein Shell Script welches nach Entfernen des Paketes ausgeführt wird
data.tar.gz
Dieses Archiv enthält alle zu installierenden Dateien immer mit voller Ordnerstruktur ausgehen von / (also dem root).
debian-binary
Enthält nur den String "2.0"
Erstellen eines IPK-Paketes ohne OE-Umgebung (ipkg-build)
Es ist wirklich sehr einfach ein eigenes IPKG zu erstellen.
Ordnerstruktur anlegen
- Erstellt einen Ordner in den ihr die notwendigen Dateien kopieren könnt zum Beispiel "meinskin" und wechselt direkt in diesen Ordner
mkdir meinskin cd meinskin
- Erstellt den Ordner CONTROL
mkdir CONTROL
- Erstellt im Ordner CONTROL die Datei control mit den entsprechenden Informationen zu dem zu erstellenden Paket (s.O.)
- Erstellt/Kopiert ggf. noch alle optionalen Control-Skripte (s.O.) in den Ordner CONTROL
- Kopiert nun alle zu installierenden Dateien mit der kompletten Ordnerstruktur von / ausgehend in das Verzeichnis
- Beispielhafter Dateibaum im Ordner meinskin
CONTROL/control usr/share/enigma2/tollerskin/skin.xml usr/share/enigma2/tollerskin/border.png usr/share/enigma2/tollerskin/infobar.png
Paket erstellen
Ladet euch das ipkg-build Skript herunter (siehe Weblinks) und macht es ausführbar
chmod 755 ipkg-build
Erstellt das Paket mit
./ipkg-build meinskin meinzielordner
Der Zielordner ist dabei optional und kann auch weggelassen werden. Als Ergebnis erhaltet ihr eine Datei nach folgender Namenskonvention (die Informationen werden aus dem control File genommen): package_version_architecture.ipk
Installation und Deinstallation eines Paket
Installiert werden Paket über die Konsole via Telnet/SSH oder via Software Plugin über die Fernbedienung.
Installation via Konsole
Auf der Dreambox wird ein IPKG-Paket nach folgendem Beispiel installiert:
- Die Datei ( z.B. enigma2-plugin-movietagger_1.1-20061213- r0_mipsel.ipk) wird per FTP etc. auf die Box in den Ordner /tmp kopiert
- Anschließend logged man sich via Telnet in die Console der Box ein.
- In Telnet gibt man dann ipkg install /tmp/enigma2-plugin-movietagger_1.1-20061213-r0_mipsel.ipk ein. Und damit wird dieses Packet installiert. Das ergibt dann in etwa folgende Ausgabe:
root@dm7025:~> ipkg install /tmp/enigma2-plugin-movietagger_1.1-20061213-r0_mipsel.ipk Installing enigma2-plugin-movietagger (1.1-20061213-r0) to root... Configuring enigma2-plugin-movietagger root@dm7025:~>
- anschließend ist dieses Packet installiert und kann benutzt werden.
Deinstallation via Konsole
Deinstalliert werden kann jedes IPKG-Paket über seinen Packetname. In diesem Beispiel enigma2-plugins-movietagger .
root@dm7025:~> ipkg remove enigma2-plugin-movietagger Removing package enigma2-plugin-movietagger from root... root@dm7025:~>