Howto:IPK Pakete erstellen

Aus TuxBoxWIKI
Wechseln zu: Navigation, Suche


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:~>

Weblinks

IPKG-Buildscript