Univention Bugzilla – Bug 28599
Versionierte Apps
Last modified: 2012-12-12 21:09:47 CET
Im App-Center kann es Anwendungen in unterschiedlichen Versionen geben. Technisch wird dies so gelöst, dass es für jede neue Version ein eigenes Komponenten-Verzeichnis gibt in der Form: <Komponentenname>-<Timestamp> Bei einem Update bspw. von 3.1 auf 3.2 existiert dasselbe Verzeichnis für die Komponente unter beiden Versionen und der Updater findet einen validen Update-Pfad. Eine Alternative wäre, dass das Verzeichnis die folgenden Form hat: <Komponentenname>-<Komponentenversion> Würde die Komponente XYZ unter UCS 3.1 nur in Version 7.1 vorliegen und für UCS 3.2 nur in Version 7.2, müsste auf Anfrage nach 3.2/maintained/component/XYZ-7.1 ein Redirect (bspw. über .htaccess) auf die aktuelle Version erfolgen: 3.2/maintained/component/XYZ-7.2 Wird mit einem UCS-Update auch gleichzeitig ein Update einer Komponente notwendig, wird dies im Updater mit einem Hinweistext angezeigt. Dieser könnte bspw. in einer Readme.<lang>-Datei im Repository-Verzeichnis abgelegt werden.
(In reply to comment #0) > ... > Eine Alternative wäre, dass das Verzeichnis die folgenden Form hat: > > <Komponentenname>-<Komponentenversion> > > Würde die Komponente XYZ unter UCS 3.1 nur in Version 7.1 vorliegen und für UCS > 3.2 nur in Version 7.2, müsste auf Anfrage nach > > 3.2/maintained/component/XYZ-7.1 > > ein Redirect (bspw. über .htaccess) auf die aktuelle Version erfolgen: > > 3.2/maintained/component/XYZ-7.2 → erst einmal mit Timestamp, da mit REDIRECTS Probleme bspw. via Proxys auftreten können.
Dieser Mechanismus wurde soweit wie folgt umgesetzt. Der Dateiname der .ini-Datei gibt den Namen der Repository-Komponente an. In der .ini-Datei wird das Feld "Id" definiert zusammen mit dem Feld "Version" angegeben. Beim Auslesen der .ini-Dateien werden die App-Informationen anhand ihrer ID gruppiert und nur die aktuellste Version angezeigt. Zum Update muss sichergestellt sein, dass für die nächste UCS-Version eine .ini-Datei mit gleichem Namen bereitgestellt wird. Der Name kann dann beliebig sein: * myapp-20121209 * myapp-v1 * myapp-u1 * ... An das Frontend wird nun zusätzlich mit übergeben, ob die App aktualisiert werden kann ("can_update"), ob sie installiert ist ("is_installed") und ob sie installiert werden kann ("can_install"). Die entsprechende Anzeige dieser Stati in der Liste wird über Bug 28002 umgesetzt. Eine App wird als aktualisierbar erkannt, wenn sie bereits installiert ist und wenn eine ältere App als Komponente (=Name der .ini-Datei) über UCR-Variablen registriert ist. Es fehlt noch die Integration von Update-Readme-Dateien im Online-Updater und im App-Center.
package_manager.py wurde angepasst: * Das Error-Handling für zu installierende / entfernende Pakete wurde in die commit()-Methode gelegt * dist_upgrade / upgrade kann jetzt auch über commit() durchgeführt werden univention-lib (2.0.9-1) unstable; urgency=low
(In reply to comment #2) > ... > Es fehlt noch die Integration von Update-Readme-Dateien im Online-Updater und > im App-Center. Das ist jetzt umgesetzt. Im Komponenten-Verzeichnis des Repositories können folgende Dateien abgelegt werden, die vom App-Center ausgelesen werden: * README_UPDATE: Hinweise für ein Komponenten-Update * LICENSE_AGREEMENT: Lizenzvereinbarungstext für die Installation einer App Die Umsetzung für den Updater steht noch aus und wurde nach Bug 28719 ausgelagert. Siehe auch: http://wiki.univention.de/index.php?title=App_Center_-_.ini-Datei
Versionisierung ist so OK Update OK Installation OK Deinstallation OK (Icons für Status OK) Changelog OK
UCS 3.1-0 has been released: http://forum.univention.de/viewtopic.php?f=54&t=2125 If this error occurs again, please use "Clone This Bug".