====== 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.