Upgrade 4.1 -> 4.2

update

#1

Ich hab ein etwas älteres System “entdeckt” und möchte es auf 4.2 bringen. Wenn ich das versuche bekomme ich das unterstehende. Dort sagt er mit dass ich die “issues fixen soll”. Aus der Meldung kann ich aber keine “issues” herauslesen. Gut, es gibt ein paar “warnings”, aber da komme ich auch nicht weiter. Weiss jemand Rat?

Gekürzt, komplett hier: https://pastebin.com/nvdh9Vim

21.05.18 10:49:15.644 DEBUG_INIT
**** Starting univention-updater with parameter=['/usr/share/univention-updater/univention-updater', 'net', '--updateto', '4.2-0', '--ignoressh', '--ignoreterm']
Version=4.1
Patchlevel=5
starting net mode
--->DBG:update_available(mode=net, cdrom_mount_point=/cdrom, iso=None)
Checking network repository
Update to = 4.2-0
**** Downloading scripts at Mon May 21 10:49:17 2018
**** Starting actual update at Mon May 21 10:49:19 2018
Running preup.sh script
Mo 21. Mai 10:49:19 CEST 2018

HINT:
Please check the release notes carefully BEFORE updating to UCS 4.2-0:
English version: https://docs.software-univention.de/release-notes-4.2-0-en.html
German version: https://docs.software-univention.de/release-notes-4.2-0-de.html

Please also consider documents of following release updates and
3rd party components.

Do you want to continue [Y/n]?
Trying to detect if migration to dependency based boot will fail:
WARNING: Removed, but configured, package console-tools left /etc/init.d/console-screen.sh behind
WARNING: Removed, but configured, package portmap left /etc/init.d/portmap behind
insserv: remove service /etc/init.d/../rcS.d/S20module-init-tools
insserv: warning: script 'klogd' missing LSB tags and overrides
insserv: remove service /etc/init.d/../rc0.d/S30urandom
insserv: enable service ../init.d/urandom -> /etc/init.d/../rc0.d/S12urandom
insserv: remove service /etc/init.d/../rc0.d/S40umountfs
insserv: enable service ../init.d/umountfs -> /etc/init.d/../rc0.d/S01umountfs
...
...
...
insserv: remove service /etc/init.d/../rcS.d/S10checkroot.sh
insserv: enable service ../init.d/checkroot.sh -> /etc/init.d/../rcS.d/S07checkroot.sh
insserv: remove service /etc/init.d/../rcS.d/S02hostname.sh
insserv: enable service ../init.d/hostname.sh -> /etc/init.d/../rcS.d/S06hostname.sh
insserv: remove service /etc/init.d/../rcS.d/S05bootlogd
insserv: enable service ../init.d/bootlogd -> /etc/init.d/../rcS.d/S04bootlogd
insserv: remove service /etc/init.d/../rcS.d/S30procps
insserv: enable service ../init.d/procps -> /etc/init.d/../rcS.d/S12procps
insserv: remove service /etc/init.d/../rcS.d/S12mtab.sh
insserv: enable service ../init.d/mtab.sh -> /etc/init.d/../rcS.d/S08mtab.sh
insserv: remove service /etc/init.d/../rcS.d/S13checkroot-bootclean.sh
insserv: enable service ../init.d/checkroot-bootclean.sh -> /etc/init.d/../rcS.d/S08checkroot-bootclean.sh
insserv: remove service /etc/init.d/../rcS.d/S55bootmisc.sh
insserv: enable service ../init.d/bootmisc.sh -> /etc/init.d/../rcS.d/S21bootmisc.sh
insserv: remove service /etc/init.d/../rcS.d/S99stop-bootlogd-single
insserv: enable service ../init.d/stop-bootlogd-single -> /etc/init.d/../rcS.d/S22stop-bootlogd-single
insserv: remove service /etc/init.d/../rcS.d/S36udev-mtab
insserv: enable service ../init.d/udev-mtab -> /etc/init.d/../rcS.d/S12udev-mtab
insserv: remove service /etc/init.d/../rcS.d/S70x11-common
insserv: enable service ../init.d/x11-common -> /etc/init.d/../rcS.d/S21x11-common
insserv: remove service /etc/init.d/../rcS.d/S70screen-cleanup
insserv: enable service ../init.d/screen-cleanup -> /etc/init.d/../rcS.d/S21screen-cleanup
insserv: remove service /etc/init.d/../rcS.d/S20kmod
insserv: enable service ../init.d/kmod -> /etc/init.d/../rcS.d/S08kmod
insserv: remove service /etc/init.d/../rcS.d/S37plymouth-log
insserv: enable service ../init.d/plymouth-log -> /etc/init.d/../rcS.d/S21plymouth-log
insserv: remove service /etc/init.d/../rcS.d/S48kbd
insserv: enable service ../init.d/kbd -> /etc/init.d/../rcS.d/S20kbd
insserv: dryrun, not creating .depend.boot, .depend.start, and .depend.stop
insserv --dryrun: OK
Aborting, because the update would likely fail.
Please check and fix the aforementioned issues.
(To ignore, set the UCRV variable update42/ignore_insserv to yes)
Error: Update aborted by pre-update script of release 4.2-0

#2

Huhu,

Sie sollten prüfen, ob es im Verzeichnis /etc/init.d Dateien mit Endungen wie .dpkg-dist, .dpkg-old gibt. Diese gilt es, richtig zu behandeln, bevor das Update durchlaufen kann. Hintergrund ist, dass durch die Umstellung auf systemd vorhandene SysV-Init-Scripte umgestellt werden müssen, und das klappt nicht, wenn alte Scripte vorhanden sind oder solche ohne brauchbare ### BEGIN INIT INFO-Abschnitte.

Ich habe für das Behandeln von dpkg-dist/dpkg-old-Dateien ein Script namens dpkgdiff entwickelt (genauer: ich habe das pacdiff von Arch Linux als Basis genommen und es für Debian-basierte Systeme angepasst). Das durchsucht komplett /etc nach solchen Dateien (ein paar andere Dateinamenserweiterungen werden ebenfalls gefunden) und bietet für jede verschiedene Aktionen an: entfernen, vorhandene Datei überschreiben, ignorieren und die wichtigste: vimdiff mit den beiden Dateien starten, damit die Administratorin beurteilen kann, was damit zu tun ist.

Ebenfalls sinnvoll ist, all diejenigen Symlinks in /etc/init.d zu löschen, die auf nicht mehr existierende Dateien verweisen. Diese kann man mit folgendem Befehl finden: find /etc/init.d -type l -xtype l

Gruß
mosu


#3

Danke so weit. Hatte heute wieder mal ein Wartungsfenster und habe das alles gemacht, leider ohne Erfolg. Der Fehler bleibt der selbe. Ideen?


#4

For me this two lines seem not be standard - but don’t know what that packages are for

rg
Christian


#5

Hallo maheschko,

falls Du ein Image deines Servers hast und du ihn jederzeit bei fehlerhaftem UpDate wieder zurücksetzen kannst, würde ich einfach diese Variable setzen:

To ignore, set the UCRV variable update42/ignore_insserv to yes

Den gleichen Fehler hatte ich bei mir auch schon mehrmals und ein Setzen dieser Variable war die Lösung.
Wahrscheinlich hatte ich in grauer Vorzeit auf den Server irgendwelche Apps mal installiert und dann deinstalliert und bei der Deinstallation sind Reste übrig geblieben.

hth,
O. Bertgen


#6

Ist eine VM und ich hab Backups und kann Snapshots machen. Ich probiere das im nächsten Wartungsfenster aus.


#7

Würde das Setzen dieser Variable über die Console mit root-Rechten machen:

ucr set update42/ignore_insserv=‘yes’

Über das Webinterface hat das damals bei mir nicht funktioniert.


#8

Huhu,

Zusätzlich zur bereits erwähnten Behandlung von .dpkg-dist-Dateien und Verwandten, sollte man generell vor einem großen Update (und 4.1 auf 4.2 ist das Paradebeispiel) alle Pakete im Status “removed, configured” vollständig entfernt werden[1]. Man bekommt all diese Pakete angezeigt, indem man nach dem Status rc filtert:

dpkg -l | grep '^rc'

Wenn man sich sicher ist, davon keine Konfigurationsdateien mehr zu benötigen, dann entfernen:

dpkg -l | awk '/^rc/ { print $2 }' | xargs -r -d'\n' dpkg --purge

Vom Setzen der update42/ignore_insserv rate ich eher ab, denn es kann dann gut sein, dass zwar der Check vor dem Update nicht mehr meckert, das Update aber mittendrin abbricht, wenn eben noch veraltete Dateien in /etc/init.d herumliegen. Die UCR-Variable verhindert eben nur die Vorabprüfung, nicht aber, dass der eigentliche Umstellvorgang durchgeführt wird.

Gruß
mosu

[1] Status “removed, configured” bedeutet, dass die Programmdateien bereits entfernt wurden, die Konfigurationsdateien aber noch existieren. Dazu gehören teilweise auch Dateien in z.B. /etc/init.d. Mehr Infos zu diesem Verhalten gibt’s im allgemeinen Debian-Admin-Handbuch.