[HowTo] Update-Pakete selbst erstellen

Antworten
Benutzeravatar
vanhofen
Administrator
Beiträge: 2924
Registriert: Di 5. Apr 2016, 00:05
Has thanked: 2 times
Been thanked: 10 times

[HowTo] Update-Pakete selbst erstellen

Beitrag von vanhofen »

Um selbst Update-Pakete zu erstellen, die dann im Online-Update erscheinen, muss man erstmal wissen, dass diese bin-Dateien nichts anderes, als gepackte tar-Archive sind.
Jedoch müssen diese zwingend eine bestimmte Grund-Struktur enthalten:

* Das Unterverzeichnis temp_inst/ctrl, welches die Scripte preinstall.sh und postinstall.sh enthalten kann.
Sind diese Scripte vorhanden, wird preinstall.sh vor dem Installieren des Paketes ausgeführt und postinstall.sh danach. So lassen sich zum Beispiel Daemons zuerst stoppen und dann wieder starten.

* Das Unterverzeichnis temp_inst/inst, welches die zu installierenden Dateien enthält. Hier muss bereits die nötige Verzeichnisstruktur des Ziels mit angegeben werden.

Erstellen wir nun also mal ein solches tar-Archiv. Beispielhaft wird es die Senderlisten enthalten.

Zuerst erstellen wir die nötige Grund-Struktur. Wir arbeiten in /tmp/package:

Code: Alles auswählen

cd /tmp
mkdir package
cd package
mkdir temp_inst
cd temp_inst
mkdir ctrl
mkdir inst
Dann erzeugen wir die (für dieses Beispiel unnötigen) Scripte. Diese mussen natürlich ausführbar sein:

Code: Alles auswählen

cd ctrl
echo -e "#!/bin/sh\n#" > preinstall.sh
chmod +x preinstall.sh
echo -e "#!/bin/sh\n#" > postinstall.sh
chmod +x postinstall.sh
cd ..
Nun legen wir die Ziel-Struktur an und kopieren die Senderlisten in das inst-Verzeichnis:

Code: Alles auswählen

cd inst
mkdir -p var/tuxbox/config/zapit
cp /var/tuxbox/config/zapit/services.xml var/tuxbox/config/zapit/
cp /var/tuxbox/config/zapit/bouquets.xml var/tuxbox/config/zapit/
cp /var/tuxbox/config/zapit/ubouquets.xml var/tuxbox/config/zapit/
cd ..
Wir können jetzt das tar-Archiv erstellen:

Code: Alles auswählen

cd /tmp/package
tar -czf chanlists.bin temp_inst
Nun haben wir im Verzeichnis /tmp/package eine Datei namens chanlists.bin liegen, die das Unterverzeichnis temp_inst enthält.
Diese Datei muss nun noch im Online-Update einer anderen Box erscheinen.

Dazu ist eine einfache Textdatei nötig, die jedoch auch wieder einer bestimmten Struktur folgen muss. Der Dateiname ist irrelevant. Wir nennen sie hier internal_update.txt.
Wir legen diese Datei an:

Code: Alles auswählen

touch /tmp/package/internal_update.txt
Zur Struktur dieser Datei:

internal_update.txt enthält für jedes Update-Package eine Zeile mit folgendem Aufbau:
<url> <typ><version><timestamp> <md5sum> <name>

url: Vollständiger URL zur Datei. Wenn die Box mit der IP 192.168.178.20 im Netzwerk erreichbar ist, also:

Code: Alles auswählen

http://192.168.178.20/tmp/packages/chanlists.bin
typ: Bezeichnet den Dateityp (einstellig); möglich sind folgende Angaben:

Code: Alles auswählen

0 = "Release"
1 = "Beta"
2 = "Internal"
L = "Locale"
S = "Settings"
A = "Addon"
T = "Text"
version: Bezeichnet die Version (dreistellig) für die dieses Package gedacht ist. Wenn die Senderlisten also für ein NG-Image v2.7 erstellt wurden muss folgendes angegeben werden: Eine strenge Überprüfung dieser Versionsnummer findet jedoch nicht statt.

timestamp: Bezeichnet den Zeitstempel des Packages (zwölfstellig). Den erhält man mit:

Code: Alles auswählen

[zee²] /tmp/package # date +%Y%m%d%H%M -r chanlists.bin
201410241224
md5sum: Bezeichnet die md5-Prüfsumme des Packages. Diese erhält man mit:

Code: Alles auswählen

[zee²] /tmp/package # md5sum chanlists.bin
093ea47f78f4e182edb996dda5b767a5  chanlists.bin
name: Eine kurze Beschreibung unseres Packages:

Code: Alles auswählen

Senderlisten von 192.1678.178.20
Nun setzen wir die Zeile also zusammen und schreiben sie in internal_update.txt:

Code: Alles auswählen

echo "http://192.168.178.20/tmp/packages/chanlists.bin S270201410241224 093ea47f78f4e182edb996dda5b767a5 Senderlisten von 192.1678.178.20" >> /tmp/package/internal_update.txt
Jetzt ist es noch nötig, die update.urls zu erweitern, sodass unsere Senderlisten auch im Online-Update erscheinen:

Code: Alles auswählen

echo "http://192.168.178.20/tmp/package/internal_update.txt" >> /var/etc/update.urls
Voilà. ;)
screenshot (9) (1).png
Ich hoffe, nun etwas Licht in das Dunkel des Online-Updates gebracht zu haben. Wenn noch Fragen offen sind, so stellt sie hier. Viel Spaß.
Antworten

Zurück zu „HowTo's“