2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2024-11-22 02:59:49 +00:00
fhem-mirror/fhem/docs/LIESMICH.update-thirdparty

146 lines
6.2 KiB
Plaintext

# $Id$
LIESMICH.update-thirdparty - Bereitstellung von Fremdpaketen
Beschreibung
Der in FHEM integrierte Updateprozess unterstützt die Installation von Paketen
die kein Bestandteil der Distribution sind. Dies soll die Verteilung von
Erweiterungen ermöglichen, die nicht in den regulären Aktualisierungsvorgang
aufgenommen werden können oder sollen. Entwicklern wird damit die Möglichkeit
angeboten ihre Pakete über ein eigenes Repository zu verteilen.
Updateprozess
Eine Aktualisierung wird in der FHEM Befehlszeile (alternativ über das
Eingabefeld von FHEMWEB) über den Befehl 'update' angestossen. Der Anwender
kann dabei das Verhalten über Parameter beeinflussen.
Der 'update' Befehl unterstützt dabei die optionale Angabe des BRANCH stable
oder development. Je nach Angabe wird die Aktualisierung aus dem entsprechendem
Updatepfad auf fhem.de (stable / development) vorgenommen. Zur Zeit unterstützt
FHEM nur Aktualisierungen aus dem Entwicklungszweig.
Darüber hinaus unterstützt der 'update' Befehl die Bereitstellung von FHEM
eigenen Paketen. Diese Funktionalität wurde im Rahmen der Entwicklung
bereitgestellt um z.B. eine getrennte Installation der FHEM-core Dateien und
FHEMWEB zu ermöglichen. Aktuell wird nur das Paket "fhem" angeboten das alle
Dateien der jeweiligen Release beinhaltet.
Im jeweiligem Repository (stable / development) wird eine Steuerungsdatei
vorgehalten. Diese Steuerungsdatei hat die Bezeichnung 'controls_<name>.txt',
wobei <name> als Platzhalter für das entsprechende Paket steht. Im Beispiel
von FHEM lautet die Steuerungsdatei 'controls_fhem.txt'.
Damit sich der Anwender vor einer Aktualisierung über Neuerungen informieren
kann, wird neben der zwingend notwendigen Steuerungsdatei ein Changelog über
die Datei CHANGED bereitgestellt.
Unmittelbar nach dem Aufruf des 'update' Befehls wird die Steuerungsdatei auf
das lokale System übertragen und auf Inkonsistenzen im Aufbau überprüft. Zur
Zeit werden folgende Steuerbefehle unterstützt:
UPD - Zu aktualisierende Datei
DIR - Zu erstellendes Verzeichnis
MOV - Zu verschiebende Datei(en)
DEL - Zu löschende Datei(en) / Verzeichnisse
Durch die Integration des FHEM Befehls 'notice' besteht die Möglichkeit vor
oder nach der Verabeitung der Steuerdatei Hinweise anzeigen zu lassen und
bei Bedarf eine Bestätigung des Nutzers einzuholen. 'notice' unterstützt dabei
ebenfalls die Abfrage von Variablen. Weiterführende Informationen sind der
Anleitung von 'notice' zu entnehmen.
Nach dem alle zu aktualisierenden Dateien installiert wurden, wird abschliessend
ein 'Housekeeping' vorgenommen. In diesem Schritt werden die Steuerbefehle
DIR, MOV, DEL (in genau dieser Reihenfolge) verarbeitet.
Struktur des Update-Repository
Das Repository beinhaltet die komplett abzubildene Struktur des zu installierenden
Paketes. Es wird empfohlen auf dem Webserver ein eigenes Verzeichnis für jedes
Paket bereit zu stellen.
Beispielstruktur für das Paket 'mypackage':
CHANGED
controls_mypackage.txt
FHEM/FhemUtils/mypackage-20130222-001
FHEM/98_myPackageModule.pm
www/myPackage/index.html
Um das Paket 'mypackage' über den 'update' Befehl zu installieren, benötigt der
Anwender die URL inkl. der Pfadangabe zur Steuerungsdatei sowie den Paketnamen.
Die URL beinhaltet nicht die Angabe der Steuerungsdatei, der Paketname sollte
in Kleinbuchstaben weitergegeben werden.
Beispiel:
'update http://my_domain.tld/my_package_path mypackage'
Struktur der Steuerungsdatei
Die Steuerungsdatei beinhaltet die zu aktualisierenden Dateien und ggf. zu
erstellende Verzeichnisse. Dabei ist der Aufbau exakt dem Beispiel zu entnehmen.
Die Steuerungsdatei muss den Namen des Paketes beinhalten. Der Installationspfad
einzelner Dateien kann sich nur unterhalb des Pfades gemäß dem globalen Attribut
'modpath' befinden (zum Schutz der Installationsumgebung).
Inhalt der Steuerungsdatei 'controls_mypackage.txt' für das Paket 'mypackage':
DIR www/myPackage
UPD 2013-02-22_20:15:00 46 www/myPackage/index.html
UPD 2013-02-22_20:15:00 257 FHEM/98_myPackage.pm
UPD 2013-02-22_20:15:00 246 FHEM/FhemUtils/mypackage-20130222-001
In diesem Beispiel wird das Verzeichnis 'www/myPackage' unterhalb von 'modpath'
erzeugt. Es wird geprüft ob die Dateien
www/myPackage/index.html
FHEM/98_myPackage.pm
FHEM/FhemUtils/mypackage-20130222-001
nicht vorhanden oder älter als der angegebene Zeitstempel sind. Trifft einer der
Fälle zu, wird die entsprechende Datei aktualisiert (UPD).
Dabei sind folgende Vorgaben einzuhalten:
UPD
benötigt die Angabe eines Zeitstempels, der Dateigröße sowie dem Dateinamen
inkl. dem Pfad. Dabei ist die Schreibweise des Zeitstempels beizubehalten.
Beispiel:
UPD 2013-02-22_20:15:00 257 FHEM/98_myPackage.pm
DIR
benötigt den Pfad unterhalb von 'modpath' des zu erzeugenden Verzeichnisses.
Beispiel:
DIR www/myPackage
DEL
benötigt die Angabe des Dateinamens (alternativ Glob) inkl. Pfad der zu
löschenden Datei(en).
Beispiel:
DEL www/myPackage/*.bak
MOV
benötigt die Angabe der Quelle und des Zieles. Glob wird unterstützt.
Beispiel:
MOV www/myPackage/*.jpg www/myPackage/images
Hinweis für Anbieter von Fremdpaketen
Anbieter von Paketen die nicht zur FHEM Distribution gehören achten bitte
eigenverantwortlich darauf, das die zur FHEM Distribution gehörenden Dateien
nicht gelöscht, verändert, o.ä. werden ohne den Anwender darauf aufmerksam
zu machen. Ein solcher Eingriff sollte nur mit Bedacht und der Sicherstellung
der Funktionalität von FHEM vorgenommen werden. Dabei sind auch eventuelle
Seiteneffekte zu berücksichtigen. Ein (ungetesteter) Eingriff in die FHEM
Umgebung kann zu einem erhöhtem Supportaufwand führen. Die Fehlersuche wird
ggf. für anderen Entwickler erschwert. Ebenfalls sollte der Einsatz von
Hinweisen über den Befehl 'notice' wohl dosiert erfolgen.
FHEM steht unter der GNU General Public License v2 oder höher. Anbieter haben
bei der Verteilung von Software ebenfalls eigenverantwortlich auf die
Einhaltung der jeweiligen Lizenzen und gültige Rechtsgrundlagen zu achten.
Autor
Martin Fischer (m_fischer at gmx dot de), Februar 2013