====== Passer de Debian 12 à Debian 13 ======
Source : [[https://www.debian.org/releases/trixie/release-notes/upgrading.html|Upgrades from Debian 12 (bookworm)]] (en) (debian.org)
===== Cas d'utilisation =====
En cours de rédaction
Je dispose d'une station de travail et d'un serveur fonctionnant sous Debian 12 (Bookworm). Je souhaite upgrader les 2 en Debian 13 (Trixie).
===== Démarche =====
La station de travail (WS) étant physiquement accessible, je choisis de commencer par elle. En cas de problème grave (perte de connexion, boot impossible, etc.), il sera plus simple de reprendre le contrôle.
Une fois la WS complètement opérationnelle, j'effectue une mise à jour de VM du serveur tournant sur la WS.
Forte de ces deux expériences, j'effectue la mise à jour du serveur.
==== Connexion ====
La mise à jour du serveur se faisant nécessairement en ssh, je choisis de faire les trois mises en jour via ssh.
^ Système mis à jour ^ Depuis ^ Via ^
| station de travail | ordi Linux et environnement de bureau | réseau local |
| VM | système hôte (station de travail) | réseau interne à la WS/VM |
| serveur | station de travail | internet |
==== Préparation ====
La préparation vise à sauvegarder des informations système((La mise à jour en Debian 13 n'altère pas les données utilisatrices contenues dans "/home". Leur sauvegarde systématique avant toute intervention substantielle relève cependant des bonnes pratiques.)) critiques et à procéder à un véritable nettoyage du système Debian 12 en cours d'utilisation. Ce nettoyage vise à mettre le système dans un état aussi proche que possible de l'état après une installation (clean install).
Si ce n'est déjà fait, pour chaque système, on prendra soin de documenter les particularités de configuration mises en place pour répondre aux spécificités de chaque environnement :
* dépôts non standards
* priorités de paquetages
* configurations d'applications permissives (samba, ssh…)
==== Mise à jour ====
La mise à jour se compose d'une succession de mises à jour et se conclue par un nettoyage du système.
=== Upgrades ===
Une bonne pratique consiste à effectuer au moins deux mises à jours de portée différente. Une première mise à jour minimale, sans suppression de paquets. Une fois effectuée, une mise à jour complète effectuera toutes les mises à jour possibles au regard des dépôts déclarés.
=== Nettoyage ===
Le nettoyage réitère certaines des opérations réalisées dans la phase préparatoire. Il vise à mettre le système Debian 13 issu de l'upgrade dans un état aussi proche que possible de ce qu'on aurait obtenu si on avait fait une installation à partir de zéro (clean install). Cela conduit jusqu'à débarrasser le système de scories de comptabilité Debian 12 / Debian 13 (apt sources, transitionnal packages, etc.).
===== Préparation =====
==== Tracer - Sécuriser ====
Pour des tas de bonnes raisons, il est nécessaire d'enregistrer une trace automatisée des actions réalisées et de leurs résultats affichés dans le terminal. En cas de problème comme d'absence de problème, cela permet de savoir avec certitude ce que l'on a fait : comprendre les erreurs, documenter ce qui fonctionne, etc.
Les mises à jour se faisant depuis un autre système, via ssh, il est très vivement recommandé de se prémunir de risques de coupure de connexion risquant de mettre un coup d'arrêt brutal à une action en cours de réalisation. Un des pire cas de figure est une interruption pendant le processus d'upgrade lui-même pouvant se traduire par un système incohérent jusqu'à être irrattrapable((Si non ne peut pas booter depuis un système sain de secours (Rescue) ni se connecter via une console physique ou virtuelle.)).
L'enregistrement des traces de lancement et d'exécution de commandes dans une terminal est usuellement traitée avec //tee//. La création de sessions indépendantes des terminaux depuis lesquels elles sont lancées est usuellement traitée en virtualisant les sessions via //screen// (ou //tmux//).
//Screen// (et //tmux//) offrent des options permettant de tracer les actions et leur résultats. Dans ces conditions, pas besoin de recourir à //tee//. Toutefois, que ce soit avec //tee// ou //screen//, les fichiers de traces peuvent devenir difficilement lisibles tant ils sont pollués par des séquences de caractères indésirables. Le filtre ans12txt peut grandement nettoyer les fichiers mais il n'est disponible qu'à partir de Trixie((Encodage de couleurs, d'enrichissements, d'effacements…)). La commande suivante permet d'effectuer un nettoyage substantiel :
cat screenlog.0 | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > typescript-processed
==== Mise à jour standard Debian 12 ====
On effectue une mise à jour __complète__ du système, comme à l'habitude de le faire.
==== Sauvegarde initiale ====
Par précaution, on sauvegarde les données utilisatrices.
On sauvegarde également les informations système suivantes :
* /etc/
* /usr/local/
* /var/lib/dpkg/
* /var/lib/apt/extended_states
* la sortie de dpkg --get-selections '*'
===== Avant de lancer la mise à jour =====
Parcourir [[https://www.debian.org/releases/trixie/release-notes/issues.en.html#mariadb-major-version-upgrades-only-work-reliably-after-a-clean-shutdown|Issues to be aware of for trixie]] (en) (debian.org)
Arrêter MariaDB car la [[https://www.debian.org/releases/trixie/release-notes/issues.en.html#mariadb-major-version-upgrades-only-work-reliably-after-a-clean-shutdown|nouvelle version ne peut pas récupérer un crash]] de la version précédente.
Régler la question du [[https://doc.dovecot.org/main/installation/upgrade/2.3-to-2.4.html|changement de configuration de Dovecot]]. Voir du côté de Virtualmin.
===== Avant de redémarrer =====
Si certains système de fichiers sont chiffrés, s'assurer que le paquetage //systemd-cryptsetup// est installé((Dans Trixie, la fonctionnalité de découverte automatique de systèmes de fichiers chiffrés a changé de paquetage. L'upgrade d'un système utilisant ce chiffrement est censé installer automatiquement ce paquetage mais mieux vaut s'en assurer.)).