LIESMICH.update-thirdparty 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. # $Id: LIESMICH.update-thirdparty 2790 2013-02-23 00:42:30Z mfr69bs $
  2. LIESMICH.update-thirdparty - Bereitstellung von Fremdpaketen
  3. Beschreibung
  4. Der in FHEM integrierte Updateprozess unterstützt die Installation von Paketen
  5. die kein Bestandteil der Distribution sind. Dies soll die Verteilung von
  6. Erweiterungen ermöglichen, die nicht in den regulären Aktualisierungsvorgang
  7. aufgenommen werden können oder sollen. Entwicklern wird damit die Möglichkeit
  8. angeboten ihre Pakete über ein eigenes Repository zu verteilen.
  9. Updateprozess
  10. Eine Aktualisierung wird in der FHEM Befehlszeile (alternativ über das
  11. Eingabefeld von FHEMWEB) über den Befehl 'update' angestossen. Der Anwender
  12. kann dabei das Verhalten über Parameter beeinflussen.
  13. Der 'update' Befehl unterstützt dabei die optionale Angabe des BRANCH stable
  14. oder development. Je nach Angabe wird die Aktualisierung aus dem entsprechendem
  15. Updatepfad auf fhem.de (stable / development) vorgenommen. Zur Zeit unterstützt
  16. FHEM nur Aktualisierungen aus dem Entwicklungszweig.
  17. Darüber hinaus unterstützt der 'update' Befehl die Bereitstellung von FHEM
  18. eigenen Paketen. Diese Funktionalität wurde im Rahmen der Entwicklung
  19. bereitgestellt um z.B. eine getrennte Installation der FHEM-core Dateien und
  20. FHEMWEB zu ermöglichen. Aktuell wird nur das Paket "fhem" angeboten das alle
  21. Dateien der jeweiligen Release beinhaltet.
  22. Im jeweiligem Repository (stable / development) wird eine Steuerungsdatei
  23. vorgehalten. Diese Steuerungsdatei hat die Bezeichnung 'controls_<name>.txt',
  24. wobei <name> als Platzhalter für das entsprechende Paket steht. Im Beispiel
  25. von FHEM lautet die Steuerungsdatei 'controls_fhem.txt'.
  26. Damit sich der Anwender vor einer Aktualisierung über Neuerungen informieren
  27. kann, wird neben der zwingend notwendigen Steuerungsdatei ein Changelog über
  28. die Datei CHANGED bereitgestellt.
  29. Unmittelbar nach dem Aufruf des 'update' Befehls wird die Steuerungsdatei auf
  30. das lokale System übertragen und auf Inkonsistenzen im Aufbau überprüft. Zur
  31. Zeit werden folgende Steuerbefehle unterstützt:
  32. UPD - Zu aktualisierende Datei
  33. DIR - Zu erstellendes Verzeichnis
  34. MOV - Zu verschiebende Datei(en)
  35. DEL - Zu löschende Datei(en) / Verzeichnisse
  36. Durch die Integration des FHEM Befehls 'notice' besteht die Möglichkeit vor
  37. oder nach der Verabeitung der Steuerdatei Hinweise anzeigen zu lassen und
  38. bei Bedarf eine Bestätigung des Nutzers einzuholen. 'notice' unterstützt dabei
  39. ebenfalls die Abfrage von Variablen. Weiterführende Informationen sind der
  40. Anleitung von 'notice' zu entnehmen.
  41. Nach dem alle zu aktualisierenden Dateien installiert wurden, wird abschliessend
  42. ein 'Housekeeping' vorgenommen. In diesem Schritt werden die Steuerbefehle
  43. DIR, MOV, DEL (in genau dieser Reihenfolge) verarbeitet.
  44. Struktur des Update-Repository
  45. Das Repository beinhaltet die komplett abzubildene Struktur des zu installierenden
  46. Paketes. Es wird empfohlen auf dem Webserver ein eigenes Verzeichnis für jedes
  47. Paket bereit zu stellen.
  48. Beispielstruktur für das Paket 'mypackage':
  49. CHANGED
  50. controls_mypackage.txt
  51. FHEM/FhemUtils/mypackage-20130222-001
  52. FHEM/98_myPackageModule.pm
  53. www/myPackage/index.html
  54. Um das Paket 'mypackage' über den 'update' Befehl zu installieren, benötigt der
  55. Anwender die URL inkl. der Pfadangabe zur Steuerungsdatei sowie den Paketnamen.
  56. Die URL beinhaltet nicht die Angabe der Steuerungsdatei, der Paketname sollte
  57. in Kleinbuchstaben weitergegeben werden.
  58. Beispiel:
  59. 'update http://my_domain.tld/my_package_path mypackage'
  60. Struktur der Steuerungsdatei
  61. Die Steuerungsdatei beinhaltet die zu aktualisierenden Dateien und ggf. zu
  62. erstellende Verzeichnisse. Dabei ist der Aufbau exakt dem Beispiel zu entnehmen.
  63. Die Steuerungsdatei muss den Namen des Paketes beinhalten. Der Installationspfad
  64. einzelner Dateien kann sich nur unterhalb des Pfades gemäß dem globalen Attribut
  65. 'modpath' befinden (zum Schutz der Installationsumgebung).
  66. Inhalt der Steuerungsdatei 'controls_mypackage.txt' für das Paket 'mypackage':
  67. DIR www/myPackage
  68. UPD 2013-02-22_20:15:00 46 www/myPackage/index.html
  69. UPD 2013-02-22_20:15:00 257 FHEM/98_myPackage.pm
  70. UPD 2013-02-22_20:15:00 246 FHEM/FhemUtils/mypackage-20130222-001
  71. In diesem Beispiel wird das Verzeichnis 'www/myPackage' unterhalb von 'modpath'
  72. erzeugt. Es wird geprüft ob die Dateien
  73. www/myPackage/index.html
  74. FHEM/98_myPackage.pm
  75. FHEM/FhemUtils/mypackage-20130222-001
  76. nicht vorhanden oder älter als der angegebene Zeitstempel sind. Trifft einer der
  77. Fälle zu, wird die entsprechende Datei aktualisiert (UPD).
  78. Dabei sind folgende Vorgaben einzuhalten:
  79. UPD
  80. benötigt die Angabe eines Zeitstempels, der Dateigröße sowie dem Dateinamen
  81. inkl. dem Pfad. Dabei ist die Schreibweise des Zeitstempels beizubehalten.
  82. Beispiel:
  83. UPD 2013-02-22_20:15:00 257 FHEM/98_myPackage.pm
  84. DIR
  85. benötigt den Pfad unterhalb von 'modpath' des zu erzeugenden Verzeichnisses.
  86. Beispiel:
  87. DIR www/myPackage
  88. DEL
  89. benötigt die Angabe des Dateinamens (alternativ Glob) inkl. Pfad der zu
  90. löschenden Datei(en).
  91. Beispiel:
  92. DEL www/myPackage/*.bak
  93. MOV
  94. benötigt die Angabe der Quelle und des Zieles. Glob wird unterstützt.
  95. Beispiel:
  96. MOV www/myPackage/*.jpg www/myPackage/images
  97. Hinweis für Anbieter von Fremdpaketen
  98. Anbieter von Paketen die nicht zur FHEM Distribution gehören achten bitte
  99. eigenverantwortlich darauf, das die zur FHEM Distribution gehörenden Dateien
  100. nicht gelöscht, verändert, o.ä. werden ohne den Anwender darauf aufmerksam
  101. zu machen. Ein solcher Eingriff sollte nur mit Bedacht und der Sicherstellung
  102. der Funktionalität von FHEM vorgenommen werden. Dabei sind auch eventuelle
  103. Seiteneffekte zu berücksichtigen. Ein (ungetesteter) Eingriff in die FHEM
  104. Umgebung kann zu einem erhöhtem Supportaufwand führen. Die Fehlersuche wird
  105. ggf. für anderen Entwickler erschwert. Ebenfalls sollte der Einsatz von
  106. Hinweisen über den Befehl 'notice' wohl dosiert erfolgen.
  107. FHEM steht unter der GNU General Public License v2 oder höher. Anbieter haben
  108. bei der Verteilung von Software ebenfalls eigenverantwortlich auf die
  109. Einhaltung der jeweiligen Lizenzen und gültige Rechtsgrundlagen zu achten.
  110. Autor
  111. Martin Fischer (m_fischer at gmx dot de), Februar 2013