Univention Bugzilla – Bug 23453
Vereinheitlichung von univention-update-Skripten
Last modified: 2023-01-25 08:39:22 CET
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.
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"
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.
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.
(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.
(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.
(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.
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.
TODO: - die Logdatei upgrader.log wird auch in UMC angezeigt und sollte noch aufgeräumt werden - diverse Tippfehler - Tests
fixed
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 ...
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" ?
(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.
In updater/tools.py wurde nicht der Returncode von dist-upgrade, sondern von tee zurückgegeben.
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]?
Ist angepasst. Es werden jetzt immer alle Errata Updates eingespielt.
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.
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.
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
fixed Problem war, dass univention-errata-update auch immer nochmal das lokale Repository aktualisiert. Das ist aber so nicht gewünscht.
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)
(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
OK
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"