====== Bookworm Upgrade ====== [[https://wiki.debian.org/NewInBookworm|New]], [[https://www.debian.org/releases/bookworm/amd64/release-notes/index.en.html|Release Notes (amd64)]]. ===== Wichtige Änderungen und potentielle Probleme ===== * Nur noch merged-usr FS layout supported. * A syslog daemon, such as rsyslog, is no longer installed by default; the systemd journalctl utility is available to review logs. * systemd-resolved was split from systemd. * Unfreie Firmware ist jetzt nicht mehr in non-free, sondern im neuen non-free-firmware. * MariaDB-Pakete haben keine Versionsnummern mehr: siehe [[https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.en.html#mariadb-versionless-package-names|Release Notes]] * request-tracker4 has been superseded by request-tracker5 in this release, and will be removed in future releases. * The isc-dhcp suite has been deprecated by the ISC. The security team will support the isc-dhcp package during the bookworm lifetime, but the package will likely be unsupported in the next stable release. * The Debian provided python3 interpreter packages (python3.11 and pypy3) are now marked as being externally-managed, following PEP-668. * The ntp package, which used to be the default way to set the system clock from a Network Time Protocol (NTP) server, has been replaced by ntpsec. The Debian default is now systemd-timesyncd, which may be adequate for users who only need an ntp client to set their clock. ===== Anleitung ===== Es empfiehlt sich, das Update in einer ''tmux''- oder ''screen''-Session durchzuführen, um nicht durch eine unterbrochene SSH-Verbindung den Upgrade-Prozess abzuschießen! ==== Vor dem Update ==== === Backup und Restore === Vor dem Update sicherstellen, dass es ein aktuelles und funktionierendes und wiederherstellbares Backup gibt. === Distanzminimierung === Bei älteren Systemen diese erst auf [[admin:bullseye|bullseye]] aktualisieren. Innerhalb von bullseye auch zuerst einen aktuellen Stand herstellen. === Prepare the package database === You should make sure the package database is ready before proceeding with the upgrade. If you are a user of another package manager like ''aptitude'' or ''synaptic'', review any pending actions. A package scheduled for installation or removal might interfere with the upgrade procedure. Note that correcting this is only possible if your APT source-list files still point to //bullseye// and not to //stable// or //bookworm//. === Recording the session === It is strongly recommended that you use the **/usr/bin/script** program to record a transcript of the upgrade session. Then if a problem occurs, you will have a log of what happened, and if needed, can provide exact information in a bug report. To start the recording, type: # script -t 2>~/upgrade-bookwormSTEP.time -a ~/upgrade-bookwormSTEP.script or similar. If you have to rerun the typescript (e.g. if you have to reboot the system) use different //**step**// values to indicate which step of the upgrade you are logging. Do not put the typescript file in a temporary directory such as ''/tmp'' or ''/var/tmp'' (files in those directories may be deleted during the upgrade or during any restart). The typescript will also allow you to review information that has scrolled off-screen. […] NB: In ''tmux'' kann man in der Standard-Config (grüne Statusleiste unten) mit **Ctrl-B PgUp**, in der grml-Config (schwarze Statusleiste unten) mit **Ctrl-A PgUp** scrollen. Scrollmodus verlassen mit **q**. After you have completed the upgrade, you can stop **script** by typing ''exit'' at the prompt. apt will also log the changed package states in ''/var/log/apt/history.log'' and the terminal output in ''/var/log/apt/term.log''. **dpkg** will, in addition, log all package state changes in ''/var/log/dpkg.log''. If you use **aptitude**, it will also log state changes in ''/var/log/aptitude''. If you have used the //-t// switch for **script** you can use the **scriptreplay** program to replay the whole session: # scriptreplay ~/upgrade-bookwormSTEP.time ~/upgrade-bookwormSTEP.script ==== Das Update ==== === Obsolete und fremde Pakete entfernen === Das ''aptitude'' in den folgenden Zeilen ist nicht aus den Debian-Release-Notes, aber Thomas mag es lieber als ''apt''. Finden: apt list '~o' aptitude search '~o' apt list '?narrow(?installed, ?not(?origin(Debian)))' aptitude search '?narrow(?installed, ?not(?origin(Debian)))' apt install apt-forktracer apt-forktracer | sort Entfernen: apt purge '~o' Pakete, die von uns selbst eingebracht wurden, sollten konfiguriert belassen werden: * ''tivsm-*'' (s. u.) * ''gskssl'' (s. u.) * ''gskcrypto'' (s. u.) * ''sssd'' * ''ganeti*'' * ''adcli'' Das Paket ''systemd-journal-persistent'' ist obsolet und kann entfernt werden. Das Verzeichnis ''/var/log/journal'' sollte auch bei einem Purge überleben, da es nicht leer ist, ggf. aber zur Sicherheit überprüfen. Die TSM-Pakete sind prinzipiell durch das CommVault-Backup obsolet, könnten aber möglicherweise nochmal relevant sein um Backups vor der Umstellung im Januar 2023 zu restoren. Also eher unwahrscheinlich. === Konfigurationsdateien === find /etc -name '*.dpkg-*' -o -name '*.ucf-*' -o -name '*.merge-error' === Paketmanager prüfen === dpkg --audit Holds überprüfen: apt-mark showhold === Klebung === Pinning (''/etc/apt/preferences{,.d}'') überprüfen. === gpgv === APT needs **gpgv** version 2 or greater to verify the keys used to sign releases of bookworm. Since **gpgv1** technically satisfies the dependency but is useful only in specialized circumstances, users may wish to ensure the correct version is installed with: # Installiert und markiert es als Dependency (so als würde man `apt-mark auto` hinterherschieben), idempotent wenn schon installiert aptitude install gpgv+M === Quellen anpassen === Nicht-offizielle Quellen ggf. temporär entfernen; Codename anpassen: sed -i s/bullseye/bookworm/ /etc/apt/sources.list.d/* systemd-detect-virt -q || sed -i -E '/non-free/{p;s/(non-free)/\1-firmware/}' /etc/apt/sources.list.d/* === Monitoring === Ggf. eine Maintenance/Silence in [[https://monitoring.fsmpi.rwth-aachen.de/zabbix/maintenance.php|Zabbix]] und [[http://prometheus.fsmpi.rwth-aachen.de/alertmanager/#/silences/new|Prometheus]] einstellen. === Update === Der übliche Drei-Schritt-Prozess, natürlich mit neuen Commands: apt update apt upgrade --without-new-pkgs apt full-upgrade Einige Körner auf die Enter-Taste streuen. Zu Risiken und Nebenwirkungen [[https://www.debian.org/releases/bookworm/amd64/release-notes/ch-upgrading.en.html#trouble|den entsprechenden Abschnitt der Release Notes]] konsultieren. === Reboot === shutdown -r now === Postgres === Postgres-Cluster von 13 (''bullseye'') zu 15 (''bookworm'') upgraden: pg_dropcluster 15 main --stop pg_upgradecluster --no-start 13 main Die ''/var/lib/postgresql/15/main/postgresql.auto.conf'' überprüfen, sie sollte enthalten: archive_mode = 'on' archive_command = 'run-parts --report --arg=%p --arg=%f --arg=pgbackrest /etc/postgresql/wal-archive' pgBackRest updaten: sed -i s,/var/lib/postgresql/13/main,/var/lib/postgresql/15/main, /etc/pgbackrest.conf sudo -u postgres pgbackrest --stanza=main --no-online \ --log-level-console=info stanza-upgrade Neuen Cluster starten: pg_ctlcluster 15 main start Check: pg_lsclusters sudo -u postgres pgbackrest --stanza=main check Alten Cluster entfernen: pg_dropcluster 13 main apt purge postgresql-13 postgresql-client-13 postgresql-contrib-13 Pfade in CommVault anpassen. ==== Nach dem Update ==== Obsolete Pakete aufräumen: apt list '~o' aptitude search '~o' # Liste überprüfen! apt purge '~o' aptitude purge '~o' Pakete mit übrig gebliebener Config: apt list '~c' aptitude search '~c' apt purge '~c' aptitude purge '~c' Allgemeines aufräumen: apt autoremove --purge apt clean find /etc -name '*.dpkg-*' -or -name '*.ucf-*' -or -name '*.merge-error' === Externe Quellen wieder einbinden === Externe Quellen wieder einbinden und mit dem üblichen Prozedere updaten und upgraden. === Ansible === Stand 2023-08-07 hat das Ansible noch keine Anpassungen für ''bookworm''. Nach Möglichkeit mit ''--check'' vorab überprüfen und ggf. anpassen. Achtung auch mit noch offenen, aber bereits umgesetzten Merge Requests, vor allem Postgres! === Reboot === shutdown -r now === Test des Systems, Monitoring === Manuelle Prüfung des Systems. Auch schauen, ob das Monitoring zufrieden ist. Monitoring wieder scharf schalten.