Bug 23453 - Vereinheitlichung von univention-update-Skripten
Vereinheitlichung von univention-update-Skripten
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Update - univention-updater
UCS 3.0
Other Linux
: P5 enhancement (vote)
: UCS 3.0 - RC
Assigned To: Stefan Gohmann
Felix Botner
:
Depends on:
Blocks: 24072 24193
  Show dependency treegraph
 
Reported: 2011-08-29 18:07 CEST by Alexander Kläser
Modified: 2023-01-25 08:39 CET (History)
3 users (show)

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
Schematische Darstellung der Update-Funktionen (51.49 KB, image/jpeg)
2011-08-30 14:19 CEST, Alexander Kläser
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Kläser univentionstaff 2011-08-29 18:07:59 CEST
Derzeit gibt es die folgenden Update-spezifischen Skripte:

  univention-updater 
  univention-sec-update
  univention-upgrade
  univention-actualise
  univention-updater-check

IMHO ist die Namensgebung nicht einheitlich und für neue Benutzer verwirrend. Vielleicht lässt sich das vereinheitlichen? Bspw. könnten die ersten drei Befehle in einem Befehl univention-updater mit zusätzlichen Optionen (z.B. --sec, --release, --all) realisiert und univention-actualise als univention-package-policies bezeichnet werden. Dann wären die Aufgaben wahrscheinlich klarer ersichtlich.
Comment 1 Alexander Kläser univentionstaff 2011-08-29 18:10:04 CEST
Wenn ich es richtig verstehe sind die Aufgaben der einzelnen Skripte folgendermaßen verteilt:

univention-updater 
* fügt Repositories für neue Releases hinzu
* ruft Release-spezifische preup- und postup-Skripte auf
* ruft "apt-get update" sowie "apt-get dist-upgrade" auf

univention-sec-update
* wie univention-updater nur für Security-Updates
* Security-Updates haben ein eigenes Verzeichnis (secX) auf dem Repository-Server und sind innerhalb einer Minor-Version gültig

univention-upgrade
* vereinfachtes Update, ruft im Prinzip univention-updater und univention-sec-update auf

univention-actualise
* Auswertung der Paketpflegerichtlinien
* ruft "apt-get update" sowie "apt-get dist-upgrade" auf

univention-updater-check
* ruft "univention-upater --check" sowie "univention-sec-update --check" auf und setzt entsprechend die UCR-Variable update/available auf "yes" oder "no"
Comment 2 Alexander Kläser univentionstaff 2011-08-30 14:19:48 CEST
Created attachment 3491 [details]
Schematische Darstellung der Update-Funktionen

Die UCR-Variable update/umc/updateprocess/easy beeinflusst das Verhalten von univention-updater-check, ist sie auf "true" gesetzt, werden auch normale Paketupdates berücksichtigt.
Comment 3 Stefan Gohmann univentionstaff 2011-10-04 14:20:28 CEST
Mit UCS 3.0 soll es wie folgt sein:

- univention-upgrade wird zum Update auf der Kommandozeile verwendet. Dabei soll das Tool Rückfragen stellen, bspw. ob das nächte Major-Release 4.0 eingespielt werden soll oder das nächste Patchlevel Release 3.0-1. Im Hintergrund können dann die Tools univention-updater, univention-security-update oder apt-get -u dist-upgrade verwendet werden.

- Die Tools univention-updater und univention-actualise sollen aus dem Standard-Pfad verschoben werden

- univention-security-update sollte nach univention-errata-update umbenannt werden und errata, anstatt sec hochzählen. Das Tool sollte ebenfalls nicht mehr im Standard-Pfad liegen

- Es gibt kein security-update Paket mehr, deshalb sollte das Tool die Errata-Nummer eigenständig hochzählen. Eine Anzeige in /etc/issue ist aber nicht notwendig.

- Per CLI-Schalter sollten die einzelnen Nachfragen unterdrückt werden, beispielsweise
 univeniton-upgrade --updateto 3.1 --force

- Die Changelog / Release Notes Abfrage sollte ohne den force-Schalter mit Ja / Yes bestätigt werden.

- Die Tools univention-updater / univention-actualise usw. verschwinden aus der Doku. Per Default sollte dann /usr/sbin/univention-updater ein Link auf /usr/sbin/univention-upgrade sein

- Das UMC Tool muss auch entsprechend angepasst werden.
Comment 4 Moritz Muehlenhoff univentionstaff 2011-10-11 11:20:16 CEST
(In reply to comment #3)
> - univention-security-update sollte nach univention-errata-update umbenannt
> werden und errata, anstatt sec hochzählen. Das Tool sollte ebenfalls nicht
> mehr im Standard-Pfad liegen

Die vorhergehenden Errata werden zukünftig in die Point-Updates übernommen. Bei einem Release-Update muss lokal gespeichert werden, bis wohin die Errata integriert wurden und diese dann nicht mehr eingebunden werden. 

Beispiel: In 3.0-1 werden alle Errata bis errata017 integriert. Das müsste im Postup-Skript gespeichert werden, so dass anschliessend nur errata018 und höher in  /etc/apt/sources.list.d/18_ucs-online-security.list gespeichert werden.
Comment 5 Stefan Gohmann univentionstaff 2011-10-12 06:56:05 CEST
(In reply to comment #4)
> (In reply to comment #3)
> > - univention-security-update sollte nach univention-errata-update umbenannt
> > werden und errata, anstatt sec hochzählen. Das Tool sollte ebenfalls nicht
> > mehr im Standard-Pfad liegen
> 
> Die vorhergehenden Errata werden zukünftig in die Point-Updates übernommen. Bei
> einem Release-Update muss lokal gespeichert werden, bis wohin die Errata
> integriert wurden und diese dann nicht mehr eingebunden werden. 
> 
> Beispiel: In 3.0-1 werden alle Errata bis errata017 integriert. Das müsste im
> Postup-Skript gespeichert werden, so dass anschliessend nur errata018 und höher
> in  /etc/apt/sources.list.d/18_ucs-online-security.list gespeichert werden.

Ein Problem ist es aber nicht, wenn die alten errata-Quellen noch enthalten sind, oder? Dann würde ich lieber drin lassen, weil alles andere eine potentielle Fehlerquelle ist.
Comment 6 Moritz Muehlenhoff univentionstaff 2011-10-12 08:15:07 CEST
(In reply to comment #5)
> (In reply to comment #4)
> > (In reply to comment #3)
> > > - univention-security-update sollte nach univention-errata-update umbenannt
> > > werden und errata, anstatt sec hochzählen. Das Tool sollte ebenfalls nicht
> > > mehr im Standard-Pfad liegen
> > 
> > Die vorhergehenden Errata werden zukünftig in die Point-Updates übernommen. Bei
> > einem Release-Update muss lokal gespeichert werden, bis wohin die Errata
> > integriert wurden und diese dann nicht mehr eingebunden werden. 
> > 
> > Beispiel: In 3.0-1 werden alle Errata bis errata017 integriert. Das müsste im
> > Postup-Skript gespeichert werden, so dass anschliessend nur errata018 und höher
> > in  /etc/apt/sources.list.d/18_ucs-online-security.list gespeichert werden.
> 
> Ein Problem ist es aber nicht, wenn die alten errata-Quellen noch enthalten
> sind, oder? Dann würde ich lieber drin lassen, weil alles andere eine
> potentielle Fehlerquelle ist.

Kein direktes Problem, aber die generierten apt-Quellen werden schnell sehr gross: Wenn wir das Verfahren für 2.4 schon hätten, wären 184 apt-Zeilen (92 Einzel-Updates für all und $ARCH) in der erzeugten Quelle in /etc/apt/sources.list.d/.

Wenn das dadurch zu langsam wird, können wir das "Verkürzen" der erzeugten Liste aber auch später noch in 3.0-1 oder 3.0-2 einführen.
Comment 7 Stefan Gohmann univentionstaff 2011-10-14 21:57:09 CEST
Eine erste Version ist jetzt gebaut. Die wichtigsten Änderungen:

- Ein Tool: univention-upgrade. Das prüft ob Updates verfügbar sind und fragt nach, ob diese installiert werden sollen. Man kann dadurch einfach die Release Updates überspringen und die Paket-Updates installieren.

- Alle anderen Tools (-updater, -securrity-updates, -actualise) wurden nach /usr/share/univention-updater verschoben

- Anstelle der alten Tools liegt ein Skript, welches auf die Verwendung von univention-upgrade verweist

- errata anstatt sec und hotfixes

Tests stehen noch aus.
Comment 8 Stefan Gohmann univentionstaff 2011-10-14 23:28:46 CEST
TODO:

- die Logdatei upgrader.log wird auch in UMC angezeigt und sollte noch aufgeräumt werden

- diverse Tippfehler

- Tests
Comment 9 Stefan Gohmann univentionstaff 2011-10-21 20:45:25 CEST
fixed
Comment 10 Felix Botner univentionstaff 2011-11-15 09:40:47 CET
Ich habe eine System, auf dem omar per sources.list eingebunden ist. apt-get meldet dann ja Fehler, da die Pakete nicht  authentifiziert werden können.
Das scheint das Tool "univention-upgrade" etwas durcheinander zu bringen. Wenn ich es nunOptionen auf einem 3.0 System aufrufe, findet er "package updates", versucht diese einzuspielen (das geht schief), findet dann die Updates erneut und versucht wieder diese zu installieren ...

In einer Endlos-Schleife wird nun immer wieder das Update versucht

-> univention-upgrade
Checking for local repository:                          none
Checking for release updates:                           none
Checking for package updates:                           found
The following packages will be upgraded: ...
Do you want to continue [Y|n]? y

Starting package upgrade                                done
Checking for errata updates:                            none
Checking for release updates:                           none
Checking for package updates:                           found
The following packages will be upgraded: ...
Do you want to continue [Y|n]? y


Starting package upgrade                                done
Checking for errata updates:                            none
Checking for release updates:                           none
Checking for package updates:                           found
The following packages will be upgraded: ...
Do you want to continue [Y|n]? y


updater.log:
...
  univention-printserver univention-system-setup univention-updater winbind
50 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 80,6 MB an Archiven heruntergeladen werden.
Nach dieser Operation werden 4.096 B Plattenplatz zusätzlich benutzt.
WARNUNG: Die folgenden Pakete können nicht authentifiziert werden!
  linux-libc-dev univention-foomatic-ppds univention-printserver
  univention-management-console-module-printers
E: Es gab Probleme und -y wurde ohne --force-yes verwendet
 dist-update finished at Mon Nov 14 21:08:30 2011...
done
Checking for errata updates:                            none
Checking for release updates:                           none
Checking for package updates:                           found
...
Comment 11 Sönke Schwardt-Krummrich univentionstaff 2011-11-15 09:57:11 CET
Sollen nur Sec-Updates eingespielt werden, muss bei univention-upgrade die aktuelle Version mit angegeben werden: "univention-upgrade --updateto=3.0-0"

Wäre es ggf. sinnvoll, dafür einen extra Kommandozeilenparameter mitzubringen?
"--security-only" ?
Comment 12 Stefan Gohmann univentionstaff 2011-11-15 13:39:34 CET
(In reply to comment #11)
> Sollen nur Sec-Updates eingespielt werden, muss bei univention-upgrade die
> aktuelle Version mit angegeben werden: "univention-upgrade --updateto=3.0-0"
> 
> Wäre es ggf. sinnvoll, dafür einen extra Kommandozeilenparameter mitzubringen?
> "--security-only" ?


Nein, siehe Bug #24612.
Comment 13 Stefan Gohmann univentionstaff 2011-11-15 22:18:25 CET
In updater/tools.py wurde nicht der Returncode von dist-upgrade, sondern von tee zurückgegeben.
Comment 14 Felix Botner univentionstaff 2011-11-17 12:28:26 CET
Bei den errata Updates gibt es noch ein Problem, dort kann man nicht mit "n" das Update abbrechen, er fragt dann einfach wieder nach.

Das System hat ein lokales Repository und dort dann die Verzeichnisse 3.0-1  errata0  errata1  errata2

Das Testsystem ist 10.200.7.144.

Als mirror Server wurde 10.200.7.150 verwendet (original maintained 3.0-0 und dummy 3.0-1 errata0  errata1  errata2)

-> univention-upgrade 
Stale PID 30211 in lockfile /var/lock/univention-updater, removing.

Starting univention-upgrade. Current UCS version is 3.0-1 errata0

Checking for local repository:                          found

Update the local repository via network [Y|n]? n

Update the local repository via cdrom [Y|n]? n

Checking for release updates:                           none
Checking for package updates:                           none
Checking for errata updates:                            none
found: errata1
Do you want to update to errata1 [Y|n]? n

none
found: errata1
Do you want to update to errata1 [Y|n]? n

none
found: errata1
Do you want to update to errata1 [Y|n]?
Comment 15 Stefan Gohmann univentionstaff 2011-11-17 14:37:54 CET
Ist angepasst. Es werden jetzt immer alle Errata Updates eingespielt.
Comment 16 Felix Botner univentionstaff 2011-11-18 09:48:20 CET
Ich habe ein 3.0 mit einer 2.4-3 Update DVD. Das Repository Update mit 

-> univention-repository-update cdrom

funktioniert.

Jedoch nicht mit 

-> univention-upgrade --cdrom=/dev/cdrom oder
-> univention-upgrade 

Starting univention-upgrade. Current UCS version is 3.0-1 errata0
Checking for local repository:                          found
Update the local repository via network [Y|n]? n
Update the local repository via cdrom [Y|n]? Y

Error: This is not a valid UCS update medium


Noch eine zweite Sache. Mein Master hat ein lokales Repo. Dort gibt es errata0-3, die werden auch gefunden, jedoch gibt es einen Fehler bei der Installation. 

Trigger für python-support werden verarbeitet ...
 dist-update finished at Fri Nov 18 09:43:49 2011...
done
Checking for errata updates:                            found

Starting errata update at Fri Nov 18 09:43:52 2011...
Starting errata update
exitcode of univention-errata-update: 1
ERROR: update failed. Please check /var/log/univention/errata-updates.log

Im update.log steht das gleiche.
Comment 17 Felix Botner univentionstaff 2011-11-18 10:53:34 CET
Zum Problem mit den errata Updates:

Das errata log sagt folgendes:
Update local repository server ...
Error: Update of local repository server failed
18.11.11 10:43:45.520  DEBUG_INIT
Another updater process is currently running - abort
Locked by PID 7417. Check lockfile /var/lock/univention-updater
***** Starting univention-errata-update at Fri Nov 18 10:43:45 2011

Update local repository server ...
Error: Update of local repository server failed

Un wenn man univention-upgrade aufruft, gibt es bereist auch das lock File
-> ps aux| grep  $( </var/lock/univention-updater)
root      7748  0.0  1.2  11288  6612 pts/0    S+   10:46   0:00 /usr/bin/python2.6 /usr/sbin/univention-upgrade
root      7997  0.0  0.1   3312   784 pts/1    S+   10:51   0:00 grep 7748

Hier scheint die Erkennung des Update Vater Prozess nicht richtig zu sein.
Comment 18 Felix Botner univentionstaff 2011-11-18 11:08:38 CET
Nach ein pstree zu errata Update Problem:

  ├─sshd,1097
  │   ├─sshd,1962 
  │   │   └─bash,2010
  │   │       └─univention-upgr,8885 /usr/sbin/univention-upgrade
  │   │           └─univention-erra,8924 /usr/share/univention-updater/univention-errata-update net
  │   └─sshd,2003 


LogFile:
Update local repository server ...
Error: Update of local repository server failed
18.11.11 11:03:47.141  DEBUG_INIT
Another updater process is currently running - abort
Locked by PID 8885. Check lockfile /var/lock/univention-updater
***** Starting univention-errata-update at Fri Nov 18 11:03:47 2011

Update local repository server ...
Error: Update of local repository server failed
Comment 19 Stefan Gohmann univentionstaff 2011-11-18 14:59:14 CET
fixed

Problem war, dass univention-errata-update auch immer nochmal das lokale Repository aktualisiert. Das ist aber so nicht gewünscht.
Comment 20 Felix Botner univentionstaff 2011-11-21 12:52:38 CET
Ohne lokalem Repository:

OK - packages update
OK - Release Update (3.0-1, 3.1-0, 3.1-1, 4.0-0)
OK - errate Update

Mit lokalem Repository:

OK - Repository update (net)
OK - Repository update (cdrom)
OK - Packages update
OK - errata Update
OK - Release Update (3.0-1, 3.1-0, 3.1-1, 4.0-0)


OK - apt-get Fehler werden in univention-upgrade erkannt und das Update wird mit einem Fehler beendet.

OK - alte Tools wurden verschoben

-> univention-actualise -h
univention-actualise has been removed. Please use univention-upgrade.
-> univention-security-update
univention-security-update has been removed. Please use univention-upgrade.
-> univention-updater -h
univention-updater has been removed. Please use univention-upgrade.
-> ls /usr/share/univention-updater/
apt-secure  set-apache-permissions    univention-removed        univention-updater-umc-dist-upgrade
postup.sh   univention-actualise      univention-updater        univention-updater-umc-univention-install

OK - Update ohne Nachfrage bis Versiob x.y-z

-> univention-upgrade --updateto=3.0-1 --noninteractive

Starting univention-upgrade. Current UCS version is 3.0-0 errata0
Checking for local repository:                          none
Checking for release updates:                           found: UCS 3.0-1
Starting update to UCS version 3.0-1
Checking for release updates:                           found: UCS 4.0-0 (skip in first iteration)
Checking for package updates:                           none
Checking for errata updates:                            found
Starting errata update
Update to 3.0 errata1
Update to 3.0 errata2
Checking for release updates:                           4.0-0 is available but updater has been instructed to stop at version 3.0-1.
Checking for package updates:                           none
Checking for errata updates:                            none
Setting update/available


Noch zwei Sachen (vielleicht etwas für neuen Bugs?):

   * Beim nicht-interaktiven Update hat man keine Möglichkeit die 
     errata auszulassen
   * Es gibt keinen Hinweis auf einen eventuell nötigen Reboot
     (update/reboot/required durch postup.sh)
Comment 21 Stefan Gohmann univentionstaff 2011-11-21 14:08:42 CET
(In reply to comment #20)
> Noch zwei Sachen (vielleicht etwas für neuen Bugs?):
> 
>    * Beim nicht-interaktiven Update hat man keine Möglichkeit die 
>      errata auszulassen

Dafür gibt es ja den Interaktiven Modus -> WONTFIX.

>    * Es gibt keinen Hinweis auf einen eventuell nötigen Reboot
>      (update/reboot/required durch postup.sh)

Stimmt: Bug #24759
Comment 22 Felix Botner univentionstaff 2011-11-21 15:04:57 CET
OK
Comment 23 Sönke Schwardt-Krummrich univentionstaff 2011-12-13 15:50:33 CET
UCS 3.0-0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer
neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert
werden: "Clone This Bug"