mirror of
https://github.com/fhem/fhem-mirror.git
synced 2024-11-22 02:59:49 +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. 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
|
|
|