Mettre à jour Debian 12 vers Debian 13 (trixie)
Mettre à jour Debian 12 vers debian 13 n'est généralement pas compliquée si vous avez déjà une installation de debian 12 propre et entièrement maîtrisée. Dans ce mémo (que je consulte moi-même), nous allons voir les principales étapes de migration.
Si vous souhaitez maximiser la stabilité un peu plus, je vous conseille d'attendre la version 13.1 qui sortira peu de temps après la version 13.0, un samedi.
Toutes les commandes sont lancées en tant que root au travers de la console KVM du serveur ou à travers l'accès SSH. Ne faites pas de sudo ridicule, passez root.
Pourquoi migrer vers Debian 13 (sans précipitation) ?
Section intitulée « Pourquoi migrer vers Debian 13 (sans précipitation) ? »Vous utilisez un serveur Debian pour héberger WordPress par exemple.
Celui-ci nécessite PHP mais est conçu pour la version de PHP la plus utilisée du moment. Vous devez donc suivre les versions pour ne pas être bloqué dans les mises à jour, un jour ou l'autre.
Debian apporte une amélioration de performances (nouveau scheduler, http/3,…)
Vous verrez de plus en plus de documentations en ligne faisant référence à Debian 13 et de moins en moins à Debian 12. Donc pour pouvoir s'y fier et être en phase, vous devez suivre. Je dirais aussi la même chose pour ceux qui tentent de résister à utiliser systemd à la place de initrd.
Quelles (mauvaises) surprises vous attendent ?
Section intitulée « Quelles (mauvaises) surprises vous attendent ? »Abracadabra !
-
Disparation des commandes last, lastb et lastlog ! (Si vous les utilisiez dans un script par exemple).
-
Arrêt critique de votre serveur MariaDB et redémarrage impossible : vérifier que votre serveur MariaDB démarre correctement sans erreur avant de mettre à jour Debian car la réparation est impossible si la version de MariaDB change !
-
Si vous avez des dépôts externes (non officiels), sachez qu'ils seront probablement désactivés et vos paquets spécifiques peuvent être downgradés ou désinstallés.
1. Sauvegardes
Section intitulée « 1. Sauvegardes »Une mise à jour peut mal se passer, détruire des données, rendre le serveur non bootable.
Je sauvegarde les serveurs via BackupPC, RCLONE et snapshot (oui, les 3 systèmes). Les bases de données doivent sauvegardées par export en SQL avant toute sauvegarde de fichier.
Vérifiez que votre système est bien sauvegardé.
Que les sauvegardes sont distantes.
Faites un snapshot en plus si c'est une machine virtuelle.
Prévoyez du temps en cas de problème pour réparer.
Soyez capable de faire un redémarrage en mode rescue.
2. Mise à jour simple de votre Debian 12
Section intitulée « 2. Mise à jour simple de votre Debian 12 »Normalement, votre serveur est déjà à jour car vous êtes consciencieux sinon il faut absolument être à jour avant :
apt updateapt upgradereboot # si nécessaire3. Stopper Puppet
Section intitulée « 3. Stopper Puppet »Si vous utilisez Puppet, stoppez-le. Il faudra vérifier les recettes pour la nouvelle version du système.
systemctl stop puppet4. Supprimez les paquets non Debian
Section intitulée « 4. Supprimez les paquets non Debian »Si vous avez installé des paquets non officiels, il faut les enlever. Vous les remettrez plus tard (s'ils fonctionnent encore).
Pour trouver ces paquets, utilisez ces commandes :
apt-get -s purge '?and(?installed,?not(?any-version(?origin(Debian))),?not(?name(puppet-agent)))'Si la liste des paquets à purger semble correcte alors on l'applique :
apt-get purge -y '?and(?installed,?not(?any-version(?origin(Debian))),?not(?name(puppet-agent)))'On efface le paquet puppet sans purger :
apt remove puppet-agent5. Supprimez les paquets obsolètes
Section intitulée « 5. Supprimez les paquets obsolètes »Un paquet obsolète est encore installé mais n'existe plus dans les dépôts. Debian arrête son suivi de sécurité environ un an après la sortie de trixie.
On regarde d'abord la liste :
apt list '?obsolete'Relisez-la avant de purger : un paquet que vous avez installé vous-même depuis une source externe apparaît ici aussi.
apt purge '?obsolete'6. Supprimez les résidus de fichiers de configuration
Section intitulée « 6. Supprimez les résidus de fichiers de configuration »On vérifie quels fichiers d'exemple de configuration à supprimer.
find /etc -name '*.dpkg-*' -o -name '*.ucf-*' -o -name '*.merge-error'Puis on efface réellement si tout est bon :
find /etc \( -name '*.dpkg-*' -o -name '*.ucf-*' -o -name '*.merge-error' \) -type f -delete7. Désactiver l'épinglage APT (pinning)
Section intitulée « 7. Désactiver l'épinglage APT (pinning) »Vérifiez le fichier ou le répertoire /etc/apt/preferences ou /etc/apt/preferences.d
Ils servent à épingler des versions paquets. Vérifiez ce qui doit être fait mais il probable qu'il faille désactiver ces fichiers.
8. Vérification de l'état des paquets
Section intitulée « 8. Vérification de l'état des paquets »On ne doit avoir aucun paquet dans un état d'installation non terminé ou autre :
dpkg --audit9. Vérifier les paquets gelés
Section intitulée « 9. Vérifier les paquets gelés »Un paquet gelé (hold) est maintenu à sa version actuelle et refuse de monter. La liste doit être vide avant la migration, sinon la mise à jour s'arrête sur un conflit de dépendances difficile à lire.
apt-mark showholdLevez le gel de ce qui remonte, sauf si vous avez une raison précise de le garder :
apt-mark unhold <paquet>10. Mettre à jour les fichiers source-list
Section intitulée « 10. Mettre à jour les fichiers source-list »Dans les fichiers /etc/apt/sources.list ou /etc/apt/sources.list.d/*, remplacez bookworm par trixie et normalement vous obtenez :
deb http://deb.debian.org/debian trixie main contrib non-free non-free-firmwaredeb http://deb.debian.org/debian trixie-updates main contrib non-free non-free-firmwaredeb http://security.debian.org trixie-security main contrib non-free non-free-firmwareIMPORTANT : le nom à mettre est deb.debian.org qui est un nom qui va pointer automatiquement vers le dépôt le plus proche.
Ou se placer dans le répertoire et remplacer bookworm par trixie en une seule commande :
sed -i 's/bookworm/trixie/g' *.listLe nouveau format deb822
Section intitulée « Le nouveau format deb822 »Debian 13 attend ses sources dans /etc/apt/sources.list.d/debian.sources, au format deb822 : une strophe par dépôt, un champ par ligne. Le format historique sur une ligne continue de fonctionner, mais un fichier .sources n'a pas d'extension .list, donc la commande sed ci-dessus ne le touche pas. Vérifiez que le répertoire n'en contient pas avant de conclure que vos sources sont à jour.
Les mêmes dépôts que ci-dessus, en deb822 :
/etc/apt/sources.list.d/debian.sources :
Types: debURIs: https://deb.debian.org/debianSuites: trixie trixie-updatesComponents: main contrib non-free non-free-firmwareSigned-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: debURIs: https://security.debian.org/debian-securitySuites: trixie-securityComponents: main contrib non-free non-free-firmwareSigned-By: /usr/share/keyrings/debian-archive-keyring.gpgUn même dépôt ne doit être déclaré qu'une fois. Si vous créez ce fichier, videz ou supprimez l'ancien /etc/apt/sources.list.
11. Mise à jour de la liste des paquets disponibles
Section intitulée « 11. Mise à jour de la liste des paquets disponibles »apt update12. Contrôle de l'espace disque avant mise à jour
Section intitulée « 12. Contrôle de l'espace disque avant mise à jour »apt -o APT::Get::Trivial-Only=true full-upgrade[ ... ]XXX upgraded, XXX newly installed, XXX to remove and XXX not upgraded.Need to get xx.xMB of archives.After this operation, AAAMB of additional disk space will be used.S'il n'y a pas assez de place, il va s'afficher ce message :
E: You don't have enough free space in /var/cache/apt/archives/.13. Nettoyage
Section intitulée « 13. Nettoyage »apt cleanapt --purge autoremove14. Vérifier le métapaquet du noyau
Section intitulée « 14. Vérifier le métapaquet du noyau »Le métapaquet du noyau (linux-image-amd64 sur un serveur 64 bits classique) suit automatiquement les versions du noyau. Sans lui, la mise à jour laisse l'ancien noyau en place et le serveur redémarre dessus.
dpkg -l 'linux-image*' | grep ^ii | grep -i metaSi la commande ne renvoie rien, installez le métapaquet correspondant à votre architecture avant la mise à jour :
apt install linux-image-amd6415. Ouvrir une session détachable
Section intitulée « 15. Ouvrir une session détachable »Les deux commandes qui suivent durent longtemps. Lancées directement dans une session SSH, une coupure réseau les interrompt en plein travail et laisse le système à moitié migré. Une session screen ou tmux continue de tourner sur le serveur même si votre connexion tombe.
apt install tmuxtmux new -s upgradeAprès une coupure, reconnectez-vous en SSH et reprenez la main :
tmux attach -t upgradeDepuis la console KVM, ce n'est pas nécessaire.
16. Mise à jour minimum
Section intitulée « 16. Mise à jour minimum »Ce processus permet de mettre à jour les paquets du système qui n'ajoutent pas de nouvelles dépendances sur de nouveaux paquets ou qui n'en enlèvent pas :
DEBIAN_FRONTEND=noninteractive UCF_FORCE_CONFFOLD=1 NEEDRESTART_MODE=a apt -o Apt::Get::Assume-Yes=true -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade --without-new-pkgs17. Mise à jour finale
Section intitulée « 17. Mise à jour finale »DEBIAN_FRONTEND=noninteractive UCF_FORCE_CONFFOLD=1 NEEDRESTART_MODE=a apt -o Apt::Get::Assume-Yes=true -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" full-upgradeapt --purge autoremoveSi tout s'est bien passé, il faut redémarrer le système.
En cas de problème, analysez la situation avant de faire un reboot.
