Bug 28599 - Versionierte Apps
Versionierte Apps
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC - App-Center
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.1
Assigned To: Alexander Kläser
Florian Best
: interim-2
Depends on: 27458
Blocks:
  Show dependency treegraph
 
Reported: 2012-09-19 11:23 CEST by Alexander Kläser
Modified: 2012-12-12 21:09 CET (History)
0 users

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Kläser univentionstaff 2012-09-19 11:23:45 CEST
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.
Comment 1 Alexander Kläser univentionstaff 2012-09-19 12:42:59 CEST
(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.
Comment 2 Alexander Kläser univentionstaff 2012-10-05 11:39:06 CEST
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.
Comment 3 Alexander Kläser univentionstaff 2012-10-09 16:33:12 CEST
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
Comment 4 Alexander Kläser univentionstaff 2012-10-11 13:26:34 CEST
(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
Comment 5 Florian Best univentionstaff 2012-10-19 14:12:24 CEST
Versionisierung ist so OK
Update OK
Installation OK
Deinstallation OK
(Icons für Status OK)

Changelog OK
Comment 6 Stefan Gohmann univentionstaff 2012-12-12 21:09:47 CET
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".