Univention Bugzilla – Bug 26387
errata-Updates nur für bestimmte Patchlevel Releases
Last modified: 2019-08-07 10:13:29 CEST
Aktuell sind errata-Updates unabhängig vom Patchlevel-Release. Das ist problematisch, wenn in einem Patchlevel Release eine Paketversion aktualisiert wurde, die in einem späteren errata-Update ebenfalls aktualisiert werden soll. Es sollte deshalb möglich sein, beim Veröffentlichen eines Errata-Updates anzugeben, welche Patchlevel Version mindestens erforderlich ist. Beim Generieren der sources.list für die errata-Updates kann das dann entsprechend berücksichtigt werden.
Aktuelle Überlegungen sind - Mit 3.0-2 werden die Errata Updates bis ca. 90 direkt integriert - Es wird mit UCS 3.0-2 eine neue DVD geben, so dass am Ende der Installation keine Errata Updates von 0 bis 90 eingespielt werden, sondern erst ab - Mit UCS 3.1 verwenden wir pro Patchlevel Release nur noch ein errata Verzeichnis - Ob wir mit UCS 3.1 komplett auf die Index-Variante umstellen, sollten wir vom Aufwand abhängig machen. Im Moment würde ich denken, dass die aktuell Anpassungen Anpassungen schon sehr umfangreich sind - Mit UCS 3.0-3 ersetzen wir den Updater, so dass ein errata Update pro Patchlevel Release unterstützt wird, ggf. reicht es nur den Repository Sync anzupassen - An den Announce Skripten müssten wir einige Umstellungen vornehmen.
Siehe auch Bug #28624.
Weitere Überlegungen: - Mit jedem Patchlevel Release wird ein errata Verzeichnis angelegt, also maintained/3.1-0 maintained/3.1-0-errata maintained/3.1-1 maintained/3.1-1-errata - Diese Verzeichnisse werden automatisch eingebunden (sofern sie existieren), per UCR ist es deaktivierbar - Diese Verzeichnisse müssen von den Mirror Skripten ebenfalls synchronisiert werden - Diese Verzeichnisse können auch für components exitieren - pre- und postup.sh Skript für errata Updates würden entfernt werden - Es wird nicht mehr zwischen Paket- und Errata-Updates unterschieden, sowohl in UMC (Online Updates) als auch in univention-upgrade wird noch noch angezeigt, dass Paketaktualisierungen verfügbar sind - Es wird in UMC und in univention-upgrade angezeigt, welche Pakete aktualisiert werden - Später könnte in dem jeweiligen errata-Verzeichnis eine YAML Datei abgelegt werden, die mehr Informationen zu den Updates beinhaltet, aus meiner Sicht ist das im Moment aber nicht notwendig - Beim Öffnen des UMC Online Update Moduls müsste direkt der Status geprüft werden, also "apt-get update ; apt-get -s -u dist-upgrade" und beispielsweise angezeigt werden, "Es stehen 23 Paketaktualisierungen zur Verfügung" - (Optional) Die Ausgabe sollte geprüft werden und wenn die Pakete aus einem errata-Verzeichnis stammen, dann kann angezeigt werden "Es stehen 12 Errata-Aktualisierungen und 11 Paketaktualisierungen zur Verfügung" Ich halte das für eine deutliche Vereinfachung. Ein Problem das ich sehe ist, dass wir dann kein erratalevel mehr in UCR haben. Meinungen? Gibt es Bedenken? Sind die Änderungen zur umfangreich für 3.1?
(In reply to comment #3) > Meinungen? Gibt es Bedenken? Sind die Änderungen zur umfangreich für 3.1? Der Kunde und der Support sollte weiterhin die Möglichkeit haben zu erkennen welcher Erratalevel eingespielt ist. Wenn errata einfach als Component eingebunden wird, dann könnte das über ein postup.sh aktualisiert werden. Das postup.sh müsste automatisch beim Veröffentlichen des errta-Updates generiert werden.
(In reply to comment #3) > Ich halte das für eine deutliche Vereinfachung. Ein Problem das ich sehe ist, > dass wir dann kein erratalevel mehr in UCR haben. Das "Datum der letzten Aktualisierung" find ich persönlich sowieso informativer als eine wenig aussagekräftige Errata-Level-Zahl.
Finde ich gut, wäre sicherlich eine Vereinfachung für Außenstehende, wenn im Online-Updater nur noch von Paketaktualisierungen (welche anderen sollten das im Normalfall sein als Errata?) gesprochen wird. Problem mit dem postup.sh wäre, dass kein normales dist-upgrade durchgeführt werden könnte. Ein beim Announce automatisch erstelltes dummy-Paket wäre eine Alternative (wenn vielleicht auch nicht ganz so chic, aber dafür besser kompatibel).
*** Bug 28120 has been marked as a duplicate of this bug. ***
*** Bug 26319 has been marked as a duplicate of this bug. ***
Folgendermaßen ist jetzt jetzt besprochen: - Mit jedem Patchlevel Release wird ein errata Verzeichnis angelegt, also maintained/3.1-0 maintained/component/3.1-0-errata maintained/3.1-1 maintained/component/3.1-1-errata - Diese Verzeichnisse werden automatisch beim Release Update aktiviert. Diese können per UCR wieder entfernt werden, die errata Verzeichnisse werden wie Components behandelt. - Diese errta Components müssen von den Mirror Skripten ebenfalls synchronisiert werden - Diese Verzeichnisse können auch für andere components existieren. In den Anleitungen für die manuelle Einbindung von Components muss die Aktivierung beschrieben werden, das App Center sollte diese Verzeichnisse automatisch aktivieren, beispielsweise: ucr set components/ucsschool/enabled=true ucr set components/ucsschool-errata/enabled=true - Es gab früher die Möglichkeit pre- und postup.sh Skripte für ein errata Update zu hinterlegen, diese Möglichkeit wird entfernt. Im Grunde sollte damit irgendwann die Möglichkeit geschaffen werden die Patchlevel-Problematik zu umgehen. Es kann natürlich noch weiterhin ein pre- und postup geben, das wird aber nur beim Release Update ausgeführt. - Es wird nicht mehr zwischen Paket- und Errata-Updates unterschieden, sowohl in UMC (Online Updates) als auch in univention-upgrade wird noch noch angezeigt, dass Paketaktualisierungen verfügbar sind - Es wird in UMC und in univention-upgrade angezeigt, welche Pakete aktualisiert werden - Beim Öffnen des UMC Online Update Moduls müsste direkt der Status geprüft werden, also "apt-get update ; apt-get -s -u dist-upgrade" und beispielsweise angezeigt werden, "Es stehen 23 Paketaktualisierungen zur Verfügung" - Beim Errata Announce wird ein automatisch ein Paket erstellt, welches die Errata Versionsnummer setzt. Bei einer Neuinstallation oder einem Update auf 3.1 sollte dieses Paket automatisch installiert werden.
(In reply to comment #9) > - Diese Verzeichnisse können auch für andere components existieren. In den > Anleitungen für die manuelle Einbindung von Components muss die Aktivierung > beschrieben werden, das App Center sollte diese Verzeichnisse automatisch > aktivieren, beispielsweise: > ucr set components/ucsschool/enabled=true > ucr set components/ucsschool-errata/enabled=true → Bug #29039
Die errata Updates sind jetzt normale Components: (In reply to comment #9) > Folgendermaßen ist jetzt jetzt besprochen: > > - Mit jedem Patchlevel Release wird ein errata Verzeichnis angelegt, also > maintained/3.1-0 > maintained/component/3.1-0-errata > maintained/3.1-1 > maintained/component/3.1-1-errata → Steht nocjmal an Bug #28893 > - Diese Verzeichnisse werden automatisch beim Release Update aktiviert. Diese > können per UCR wieder entfernt werden, die errata Verzeichnisse werden wie > Components behandelt. Wird im postup.sh gemacht. > - Diese errta Components müssen von den Mirror Skripten ebenfalls > synchronisiert werden Das wird für UCS 3.0 gemacht. > - Diese Verzeichnisse können auch für andere components existieren. In den > Anleitungen für die manuelle Einbindung von Components muss die Aktivierung > beschrieben werden, das App Center sollte diese Verzeichnisse automatisch > aktivieren, beispielsweise: > ucr set components/ucsschool/enabled=true > ucr set components/ucsschool-errata/enabled=true → Bug #29039 > - Es gab früher die Möglichkeit pre- und postup.sh Skripte für ein errata > Update zu hinterlegen, diese Möglichkeit wird entfernt. Im Grunde sollte > damit irgendwann die Möglichkeit geschaffen werden die Patchlevel-Problematik > zu umgehen. Es kann natürlich noch weiterhin ein pre- und postup geben, das > wird aber nur beim Release Update ausgeführt. > > - Es wird nicht mehr zwischen Paket- und Errata-Updates unterschieden, sowohl > in UMC (Online Updates) als auch in univention-upgrade wird noch noch > angezeigt, dass Paketaktualisierungen verfügbar sind → Das ist fertig. > - Es wird in UMC und in univention-upgrade angezeigt, welche Pakete > aktualisiert werden → Das ist wie bisher > - Beim Öffnen des UMC Online Update Moduls müsste direkt der Status geprüft > werden, also "apt-get update ; apt-get -s -u dist-upgrade" und beispielsweise > angezeigt werden, "Es stehen 23 Paketaktualisierungen zur Verfügung" Es wird in UMC und in univention-upgrade angezeigt, dass Aktualisierungen verfügbar sind, in univention-upgrade wird auch angezeigt was, in UMC wird das beim Klick auf "Paket-Aktualisierungen installieren" angezeigt. > - Beim Errata Announce wird ein automatisch ein Paket erstellt, welches die > Errata Versionsnummer setzt. Bei einer Neuinstallation oder einem Update auf > 3.1 sollte dieses Paket automatisch installiert werden. Das Paket wird jetzt direkt ausgeliefert und installiert. Es fehlt noch der automatische Build → Bug #28893
Starting update process, this may take a while. Check /var/log/univention/updater.log for more information. Running postup.sh script:Create repository/online/component/3.1-0-errata Create repository/online/component/3.1-0-errata/description Create repository/online/component/3.1-0-errata/version File: /etc/apt/sources.list.d/20_ucs-online-component.list File: /etc/apt/mirror.list File: /etc/apt/sources.list.d/15_ucs-online-version.list done. Checking for release updates: none Checking for package updates: none Checking for errata updates: none Checking for component errata updates for 3.1-0-errata: An error occurred - stopping here. Checking for component errata updates for 3.1-0-errata: Traceback in univention-upgrade: Traceback (most recent call last): File "/usr/sbin/univention-upgrade", line 439, in main File "/usr/sbin/univention-upgrade", line 321, in performUpdate run=True File "/usr/lib/python2.6/subprocess.py", line 470, in call return Popen(*popenargs, **kwargs).wait() File "/usr/lib/python2.6/subprocess.py", line 623, in __init__ errread, errwrite) File "/usr/lib/python2.6/subprocess.py", line 1141, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory → Zwei Probleme 1. die UCR Befehle für das Aktivieren des Repository sollten die Ausgabe in die Logdatei umgeleiten 2. /usr/share/univention-updater/univention-errata-components-update muss in 3.1 noch vorhanden sein, da der alte Updater dies aufruft.
(In reply to comment #12) > → Zwei Probleme > 1. die UCR Befehle für das Aktivieren des Repository sollten die Ausgabe in die > Logdatei umgeleiten > 2. /usr/share/univention-updater/univention-errata-components-update muss in > 3.1 noch vorhanden sein, da der alte Updater dies aufruft. Ist angepasst. Damit die Tools mit 3.1-1 entfernt werden gibt es Bug #29199
Ich habe die updater Tests noch entsprechend angepasst.
Es ist noch aufgefallen, dass univention-updater-check noch errata-update usw. verwendet hat, aber noch kein Test auf normale Paketupdates in einem Repository. Jetzt verwendet univention-updater-check nur noch univention-upgrade --check.
Im Zuge dieses Bugs ist im UMC-Modul ein _check_dist_upgrade() hinzugekommen, das automatisch ausgeführt wird. Hat mich sehr gefreut, als ich es bemerkt hatte. Jetzt ist aufgefallen, dass das im easy_mode unnötigerweise auch aufgerufen wird. Im, easy_mode müssten die interessanten Informationen eigentlich schon mit dem ersten Request zurückgegeben worden sein.
Code-Review: > +++ base/univention-updater/modules/univention/updater/tools.py trailing whitespaces > +++ base/univention-updater/python/univention-repository-create trailing whitespaces > +import string > +string.replace(kernel, '/boot/', '') string ist deprecated und sollte nicht mehr verwendet werden. kernel.replace('/boot/', '') > # read the default kernel from the grub cfg Das liest ggf. den letzten (ältesten) Kernel aus, nicht den ersten (neusten). Auf der DVD ist zwar nur ein Kernel, aber sicher ist sicher. fehlendes "grubcfg_fd.close()" > + print 'Failed to search kernel' Fehler nach STDERR. > + if not minor_version == '0': != > +++ base/univention-updater/script/enable-apache2-umc trailing whitespaces > - [ -z "$NORESTART" ] && "/etc/init.d/$prog" restart >/dev/null 2>&1 > + [ -z "$NORESTART" ] && "/etc/init.d/$prog" restart Ist das Entfernen der Umleitung Absicht? > +++ base/univention-updater/script/postup.sh > +# Move to mirror mode for previous errata component > +# ucr set repository/online/component/3.0-2-errata=false \ > +# repository/online/component/3.0-2-errata/localmirror=true Soll es das noch geben oder kann das weg? > +++ base/univention-updater/script/preup.sh trailing whitespaces > +hold_packages=$(LC_ALL=C dpkg -l | grep ^h | awk '{print $2}') mindestens COLUMNS=200 grep | awk → awk '/^h/{print $2}' oder besser gleich dpkg-query -W -f '${Status}\t${Package}\n' | awk '/^hold/{print $4}' > base/univention-updater/script/univention-add-app > + exit 1 Der Aufruf von --help sollte "exit 0" liefern. > --- base/univention-updater/conffiles/etc/apt/sources.list.d/18_ucs-online-errata.list Das Template und die daraus generierte Datei bleiben bei einem Upgrade bestehen: # dpkg-query -W -f '${Conffiles}\n' univention-updater | grep obsolete /etc/univention/templates/files/etc/apt/sources.list.d/18_ucs-online-errata.list 6b1695d071d5d8a07b98a2576c27f610 obsolete /etc/univention/templates/modules/18_ucs-online-errata.py 2e829139a0352f7023d6107ecaf30e6d obsolete Nach einem "ucr update" sind zumindest die Diversions entfernt, d.h. die Einträge aus der .info-Datei sind dann richtig umgesetzt. Die Dateien sollten aber trotzdem noch entfernt bzw. verschoben werden. TBC... OK: ChangeLog
FAIL: Siehe letzter Punkt in Comment #17 bzw. fehlendem "ucr update" FAIL: Wir sollten Bug #26983 rückgängig machen, weil jetzt initial noch keine Errata-Updates verfügbar sind und der Updater deswegen in /etc/apt/sources.list.d/20_ucs-online-component.list nur ein Configuration error: component not found: 3.1-0-errata einträgt. Ohne ein erneutes "ucr commit" wid damit dort niemals die richtige "deb ..."-Zeile eingetragen. Damit wird dann auch Bug #26983 behoben. Ggf. sollte der Updater vor dem Einspielen der Security-Updates einfach ein "ucr commit /etc/apt/sources.list.d/" durchführen, denn ansonsten kann folgendes Szenario auftreten: Bei Installation gibt es noch kein errata-Component-Verzeichnis, d.h. in /etc/apt/sources.list.d/20_ucs-online-component.list steht dann nur die Fehlermeldung. Da ein univention-update dann keine ausstehenden Paketaktualisierungen finden kann, muß der Benutzer erst von Hand ein commit durchführen, um dann irgendwann Updates erhalten zu können.
(In reply to comment #18) > FAIL: Siehe letzter Punkt in Comment #17 bzw. fehlendem "ucr update" > > FAIL: Wir sollten Bug #26983 rückgängig machen, weil jetzt initial noch keine > Errata-Updates verfügbar sind und der Updater deswegen in > /etc/apt/sources.list.d/20_ucs-online-component.list nur ein > Configuration error: component not found: 3.1-0-errata > einträgt. Ohne ein erneutes "ucr commit" wid damit dort niemals die richtige > "deb ..."-Zeile eingetragen. > Damit wird dann auch Bug #26983 behoben. > > Ggf. sollte der Updater vor dem Einspielen der Security-Updates einfach ein > "ucr commit /etc/apt/sources.list.d/" durchführen, denn ansonsten kann > folgendes Szenario auftreten: > Bei Installation gibt es noch kein errata-Component-Verzeichnis, d.h. in > /etc/apt/sources.list.d/20_ucs-online-component.list steht dann nur die > Fehlermeldung. > Da ein univention-update dann keine ausstehenden Paketaktualisierungen finden > kann, muß der Benutzer erst von Hand ein commit durchführen, um dann irgendwann > Updates erhalten zu können. Das wird bereits gemacht, siehe den Anfang von component_update_get_packages(). Die Funktion wird von univention-upgrade verwendet. Beim Check per UMC wird die Datei ebenfalls neu geladen: root@master311:~# echo "#foobar" >>/etc/apt/sources.list.d/20_ucs-online-component.list root@master311:~# tail -n 1 /etc/apt/sources.list.d/20_ucs-online-component.list #foobar root@master311:~# univention-upgrade Starting univention-upgrade. Current UCS version is 3.1-0 errata0 Checking for local repository: none Checking for release updates: none Checking for package updates: none root@master311:~# tail -n 1 /etc/apt/sources.list.d/20_ucs-online-component.list root@master311:~# (In reply to comment #17) > Code-Review: > > +++ base/univention-updater/modules/univention/updater/tools.py > trailing whitespaces > > > +++ base/univention-updater/python/univention-repository-create > trailing whitespaces > > > +import string > > +string.replace(kernel, '/boot/', '') > string ist deprecated und sollte nicht mehr verwendet werden. > kernel.replace('/boot/', '') > > > # read the default kernel from the grub cfg > Das liest ggf. den letzten (ältesten) Kernel aus, nicht den ersten (neusten). > Auf der DVD ist zwar nur ein Kernel, aber sicher ist sicher. > fehlendes "grubcfg_fd.close()" > > + print 'Failed to search kernel' > Fehler nach STDERR. > > > + if not minor_version == '0': > != > > > +++ base/univention-updater/script/enable-apache2-umc > trailing whitespaces > > > - [ -z "$NORESTART" ] && "/etc/init.d/$prog" restart >/dev/null 2>&1 > > + [ -z "$NORESTART" ] && "/etc/init.d/$prog" restart > Ist das Entfernen der Umleitung Absicht? > > > +++ base/univention-updater/script/postup.sh > > +# Move to mirror mode for previous errata component > > +# ucr set repository/online/component/3.0-2-errata=false \ > > +# repository/online/component/3.0-2-errata/localmirror=true > Soll es das noch geben oder kann das weg? Das soll zunächst so auskommentiert stehen bleiben. Ab dem nächsten Release wird man das aktivieren müssen. > > +++ base/univention-updater/script/preup.sh > trailing whitespaces > > > +hold_packages=$(LC_ALL=C dpkg -l | grep ^h | awk '{print $2}') > mindestens COLUMNS=200 > grep | awk → awk '/^h/{print $2}' > oder besser gleich > dpkg-query -W -f '${Status}\t${Package}\n' | awk '/^hold/{print $4}' > > > base/univention-updater/script/univention-add-app > > + exit 1 > Der Aufruf von --help sollte "exit 0" liefern. Zu den Punkten bitte einen neuen Bug anlegen, da die nicht zu diesem Bug gehört. > > --- base/univention-updater/conffiles/etc/apt/sources.list.d/18_ucs-online-errata.list > Das Template und die daraus generierte Datei bleiben bei einem Upgrade > bestehen: > # dpkg-query -W -f '${Conffiles}\n' univention-updater | grep obsolete > > /etc/univention/templates/files/etc/apt/sources.list.d/18_ucs-online-errata.list > 6b1695d071d5d8a07b98a2576c27f610 obsolete > /etc/univention/templates/modules/18_ucs-online-errata.py > 2e829139a0352f7023d6107ecaf30e6d obsolete > Nach einem "ucr update" sind zumindest die Diversions entfernt, d.h. die > Einträge aus der .info-Datei sind dann richtig umgesetzt. Die Dateien sollten > aber trotzdem noch entfernt bzw. verschoben werden. Wird jetzt entfernt.
(In reply to comment #19) > (In reply to comment #18) > > Ggf. sollte der Updater vor dem Einspielen der Security-Updates einfach ein > > "ucr commit /etc/apt/sources.list.d/" durchführen, denn ansonsten kann > > folgendes Szenario auftreten: ... > Das wird bereits gemacht, siehe den Anfang von component_update_get_packages(). OK > (In reply to comment #17) > > Code-Review: ... > Zu den Punkten bitte einen neuen Bug anlegen, da die nicht zu diesem Bug > gehört. Bug #29410 > > > --- base/univention-updater/conffiles/etc/apt/sources.list.d/18_ucs-online-errata.list > > Das Template und die daraus generierte Datei bleiben bei einem Upgrade > > bestehen: ... > Wird jetzt entfernt. OK. OK: Mirror update OK: Direktes Update OK: Ausstehende Paket-Updates werden in UMC angezeigt. (In reply to comment #14) > Ich habe die updater Tests noch entsprechend angepasst. FYI: Derzeit get der 09/34updater-check schief, weil früher /usr/share/univention-updater/univention-updater-check nur geprüft hat, ob ein nächstes Errata-Update oder Release-Update verfügbar sind. Jetzt wird direkt u-upgrade aufgerufen, was die UCR-Variable update/available auch schon dann setzt, wenn nur neue Pakete vorliegen. Das sollte noch korrigiert werden: Vermutlich reicht das komlette Entfernen für easy=false. OK: 8.0.54-3.1126.201211271005
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".