Initiales Setup
TODO: Voraussetzungen
velobox_S<major><minor><revision>.tar.gz
Stichpunkte
- http Server auf Port 8080, Websocket API
- Downloadserver mit Unterverzeichnis in velobox.conf definiert
- Downloadserver stellt Datei vlbupdates.json mit der Beschreibung aller verfügbaren Updates
- Angaben je Version (Update): FROM_MIN FROM_MAX TO file comment (Sprachkode default "en")
- FROM_MIN == "" && FROM_MAX == "" ===> Erstinstallation
- Einteilung in Softwarelevels:
- velobox: Array mit den Versionen
- vmkstationd: Array mit den Versionen
- apps: Ein Objekt je app (Schlüssel appname). Darin:
- usage: Array
- versions: Array
- htdocs: Array mit ...
- usage
- implementation
- versions: Array
- FROM_MIN ... FROM_MAX muß lückenlos sein über alle Versionen und darf keine Überlappungen haben.
- Installierte Vorabversionen (x.y.z_irgendwas) erhalten Update
- wenn FROM_MIN <= VERSION <= FROM_MAX (wie andere Versionen)
- wenn VERSION == TO
- Für "velobox" gibt es keine Erstinstallation als Download innerhalb der Updates.
Die muß bereits erfolgt sein, damit vlbupdate überhaupt funktioniert.
- Downloadserver initial für Erstinstallation im LAN konfiguriert
- Erstinstallation der htdocs setzt Downloadserver auf Internet
Dateinamen
- velobox_{S|U}<major>.<minor>.<revision>.tar.gz*)
- vmkstationd_{S|U}<major>.<minor>.<revision>.tar.gz
- <appcode>_<usage>_{S|U}<major>.<minor>.<revision>.tar.gz
- htdocs_<usage>_<implementation>_{S|U}<major>.<minor>.<revision>.tar.gz
*)Die Variante "S"(Setup) gibt es nicht als öffentliches Download.
Versionierung
Die Versionierung aller Softwarekomponenten folgt der Regel:
<main>.<minor>.<revision>[_<ancestor>].
- revision:
- Eine Version mit neuer Revisionsnummer beinhaltet nur Korrekturen.
- minor:
- Eine neue Unterversion ist kompatibel zu ihrem Vorgänger.
- main:
- Eine neue Hauptversion ist evtl. nicht kompatibel zu ihrem Vorgänger.
- ancestor:
- Ein optionaler "Vorläufigkeitsanhang" kennzeichnet die Version als vorläufigen Vorgänger der eigentlichen Version.
Versionen mit Vorläufigkeitsanhang werden
nicht offiziell über vlbupdate verteilt und
dürfen in FROM_MIN, FROM_MAX und TO in vlbupdates.json nicht vorkommen.
*)
Sie werden von vlbupdate ersetzt, wenn eine entsprechende fertige Version vorliegt.
Der optionale Vorläufigkeitsanhang kann folgende Formen annehmen:
| Vorläufer | Bedeutung | Bemerkung |
| X[<date>] | eXperimentell | |
| A[<date>] | Alpha | prinzipiell unfertig |
| B<nr>[U[<date>]] | Beta <nr> | evtl. unfertig |
| P<nr>[U[<date>]] | Prerelease <nr> | evtl. unfertig |
| U[<date>] | Unfinished | Unfertige neue Version |
Die Datumsangaben haben das Format "YYYYMMDD".
Hinweis:
Das Datum sollte immer den Tag der Erstellung des Updates angeben.
Die aktuelle (eingecheckte) Entwicklerversion wird zweckmäßigerweise ohne Datum angegeben.
Dieses wird erst beim Erstellen des .tar.gz Paketes angehängt (oder ggf. ersetzt).
*)
Man kann zu Testzwecken ggf. ein vorläufiges Update
über die Direkteingabe des Namens der Downloaddatei bereitstellen,
der nicht in der Datei vlbupdates.json auftaucht.
Zudem ist es möglich, statt der angegebenen fertigen TO-Version X.Y.Z, eine vorläufige Version zu installieren.
Dann aber muß das Installationsskript selbst regeln, inwieweit ein Update auf die installierte Version möglich ist.
Setup und Update mit Downgrade bei Fehler
Die beiden Daemons <vmkdaemon> (vlbupdate und vmkstationd) der Velobox werden mit allen ihren Dateien
im Verzeichnis /usr/local/<vmkdaemon>_V<version> entpackt.
Alte Versionen werden nicht gelöscht.
(Noch) interessierende Versionen sind wie folgt verlinkt:
- /usr/local/<vmkdaemon>:
-
Dieser Link zeigt auf die aktuelle Version, die vom Startskript aufgerufen werden soll.
- /usr/local/<vmkdaemon>_next:
-
Dieser Link wird nach dem Entpacken einer neuen Version erzeugt und verweist auf eben diese.
Wenn das Startskript einen solchen Link findet, tut es folgendes:
- Sofern es einen Link /usr/local/<vmkdaemon>_last gibt, wird dieser gelöscht.
- Der Link /usr/local/<vmkdaemon> wird umbenannt in /usr/local/<vmkdaemon>_last.
- Der Link /usr/local/<vmkdaemon>_next wird umbenannt in /usr/local/<vmkdaemon>.
Damit wird die neue Version aktiviert.
- Der Daemon (die nunmehr aktuelle, neue Version) wird gestartet.
Am Ende des erfolgreichen Durchlaufens der Startprozedur des Daemons löscht dieser einen evtl. vorhandenen Link /usr/local/<vmkdaemon>_last.
- /usr/local/<vmkdaemon>_last:
-
Dieser Link zeigt auf die letzte Vorgängerversion.
Wenn das Startskript einen solchen Link findet, bedeutet das, daß der Start der (neuen) aktuellen Version gescheitert ist.
Es tut deshalb folgendes:
- Der Link /usr/local/<vmkdaemon> wird gelöscht.
- Der Link /usr/local/<vmkdaemon>_last wird umbenannt in /usr/local/<vmkdaemon>.
- Der Daemon (die vorhergehende, bereits gelaufene Version) wird gestartet.
TODO Erstellen von Installationspaketen
velobox3/devel/create_velobox_tar_gz.sh
TODO Updateskripte für vlbupdate