mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 03:06:37 +00:00
146 lines
6.2 KiB
Plaintext
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. Trift 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 evtuelle
|
||
|
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
|
||
|
|