Univention Bugzilla – Bug 25273
preup.sh wurde nicht ins lokale Repo synchronisiert
Last modified: 2011-12-27 11:01:40 CET
Created attachment 3995 [details] updater.log Auf einem UCS 2.4-4 Master mit lokalem Repository wurde der Befehl univention-updater net --updateto 3.0-0 --ignoressh aufgerufen. Das Update auf UCS 3.0 ist dabei fehlgeschlagen: root@mas116:~# univention-updater net --updateto 3.0-0 --ignoressh Checking local repository Update to = 3.0-0 Error: Failed to execute "apt-get -o DPkg::Options::=--force-confold -o DPkg::Options::=--force-overwrite -o DPkg::Options::=--force-overwrite-dir -y --force-yes -u dist-upgrade" Error: Please check "/var/log/univention/updater.log" for details. root@mas116:~# Im lokalen Repository konnte anschließend in /var/lib/univention-repository/mirror/3.0/maintained/3.0-0/all/ keine preup.sh und postup.sh gefunden werden. Ein anschließender Aufruf von "univention-repository-update net" hat dazu geführt, dass beide Dateien anschließend im lokalen Repo enthalten waren, so dass diese beim erneuten Updateversuch auch ausgeführt wurden.
Erstmal auf 2.4-4 getaggt.
Trat bei mir auch so auf: Aus meiner /var/log/univention/updater.log: Preparing to replace slapd 2.4.23-1.47.201102221221 (using .../slapd_2.4.23-7.2.64.201110290030_i386.deb) ... locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Kann LC_ALL nicht auf die Standard-Lokale einstellen: Datei oder Verzeichnis nicht gefunden * Stopping ldap server(s): slapd ...done. locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Kann LC_ALL nicht auf die Standard-Lokale einstellen: Datei oder Verzeichnis nicht gefunden Dumping to /var/backups/slapd-2.4.23-1.47.201102221221: - directory dc=univention,dc=qa... OVER: Loading Translog Overlay OVER: db_init OVER: Configuring Translog Overlay OVER: Configured Translog Overlay to use file "/var/lib/univention-ldap/listener/listener" bdb(dc=univention,dc=qa): Build signature doesn't match environment bdb_db_open: database "dc=univention,dc=qa" cannot be opened, err -30971. Restore from backup! backend_startup_one (type=bdb, suffix="dc=univention,dc=qa"): bi_db_open failed! (-30971) slap_startup failed failed. dpkg: error processing /var/lib/univention-repository/mirror/3.0/maintained/3.0-0/i386/slapd_2.4.23-7.2.64.201110290030_i386.deb (--unpack): subprocess new pre-installation script returned error exit status 1 locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Kann LC_ALL nicht auf die Standard-Lokale einstellen: Datei oder Verzeichnis nicht gefunden locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Kann LC_ALL nicht auf die Standard-Lokale einstellen: Datei oder Verzeichnis nicht gefunden Backing up /etc/ldap/slapd.conf in /var/backups/slapd-2.4.23-7.2.64.201110290030... done. File: /etc/init.d/slapd Check database: db4.7_recover: Build signature doesn't match environment done * Starting ldap server(s): slapd . ... Errors were encountered while processing: /var/lib/univention-repository/mirror/3.0/maintained/3.0-0/i386/slapd_2.4.23-7.2.64.201110290030_i386.deb Traceback (most recent call last): File "/usr/sbin/univention-pkgdb-scan", line 35, in ? import univention.pkgdb File "/usr/lib/python2.4/site-packages/univention/pkgdb.py", line 35, in ? import apt_pkg ImportError: No module named apt_pkg E: Sub-process /usr/bin/dpkg returned an error code (1) Error: Failed to execute "apt-get -o DPkg::Options::=--force-confold -o DPkg::Options::=--force-overwrite -o DPkg::Options::=--force-overwrite-dir -y --force-yes -u dist-upgrade" Ggf. ist hier der OOM aus Bug #25518 die Ursache?
Ursache war, das durch --updateto zwar repository/mirror/version/end aktualisiert wurde, allerdings die UniventionMirror()-Instanz noch den alten Wert benutzt hat, die für das Herunterladen der Skript verantwortlich ist. Der Fehler lässt sich rekonstruieren, wenn man die besagte UCR-Variable per unset entfernt (unset). svn29987, univention-updater_6.0.111-1.989.201112162029 ChangeLog: (svn11610) \item In \ucsCommand{univention-repository-update} wurde ein Fehler korrigiert, der bei Benutzung der \ucsCommand{-{}-updateto}-Option dazu geführt hat, das die \texttt{preup.sh} und \texttt{postup.sh}-Skripte des Updaters nicht kopiert wurden (\ucsBug{25273}).
Die Korrektur ist noch nicht vollständig: Da ein "univention-updater net" mit lokalem Repository zunächst ein (kaputtes) "univention-repository-update net" ausführt, bevor dann ein "univention-updater local" ausgeführt wird, fehlt beim Update dann die preup/postup-Skripte. Für 2.4-3 → 2.4-4 ist da noch unkritisch, aber für 2.4-4 → 3.0-0 ist das kritisch, weil zwischenzeitlich kein weiteres "uni-repo-up net" aufgerufen wird. Als Work-Around soll in univention-updater noch ein zusätzlicher Test eingebaut werden, der überprüft, ob das preup-Skript für 3.0-0 da ist und ansonsten abbricht.
Der Updater prüft nun zusätzlich im "local"-Fall mit lokalem Repository, ob beim Update auf "3.0-0" neben der "all/Packages.gz"-Datei das "preup.sh"-Skript existiert und ruft ansonsten "uni-repo-up net --updateto x.y-z" erneut auf. svn29997, 6.0.111-2.991.201112191250 ChangeLog: (svn11624) \item In \ucsCommand{univention-repository-update} und \ucsCommand{univention-updater} wurde ein Fehler korrigiert, der bei Benutzung der \ucsCommand{-{}-updateto}-Option dazu geführt hat, das die \texttt{preup.sh} und \texttt{postup.sh}-Skripte des Updaters nicht kopiert wurden (\ucsBug{25273}).:
Funktioniert.
UCS 2.4-4 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"