Aller au contenu

Mettre à jour Debian 11 vers Debian 12 (bookworm)

Christophe TREMBLAY-GUILLOUX
Christophe TREMBLAY-GUILLOUXIngénieur système Linux

Mettre à jour Debian 11 vers Debian 12 n'est généralement pas compliqué si vous avez déjà une installation de Debian 11 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.

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.

1. Quelles nouveautés de Debian 12 sont utiles à savoir pour un VPS ?

Section intitulée « 1. Quelles nouveautés de Debian 12 sont utiles à savoir pour un VPS ? »

Voici la liste des paquets importants pour un VPS qui seront mis à jour s'ils sont installés :

PaquetDebian 11Debian 12
Apache2.4.542.4.57
Dovecot2.3.132.3.19
Exim4.944.96
GnuPG2.2.272.2.40
libc2.312.36
Linux5.106.1
MariaDB10.510.11
Nginx1.181.22
OpenLDAP2.4.572.5.13
OpenSSH8.4p19.2p1
Perl5.325.36
PHP7.48.2
Postfix3.53.7
PostgreSQL1315
Python 33.9.23.11.2
systemd247252

NTP est un protocole qui sert à synchroniser l'horloge du serveur.

Si vous avez déjà le paquet ntp, il sera remplacé par ntpsec, un dérivé sécurisé du paquet ntp.

Si vous n'avez pas de démon ntp ou équivalent, c'est le paquet systemd-timesyncd qui sera installé.

Attention : ne mettez pas à jour les serveurs qui ont l'agent Puppet en version inférieure à 7 avant d'avoir mis à jour le serveur qui héberge le puppetmaster.

Il faut toujours mettre à jour le puppetmaster avant tous les autres serveurs.

1.4/ Remplacement (non forcé) de rsyslog par systemd-journald

Section intitulée « 1.4/ Remplacement (non forcé) de rsyslog par systemd-journald »

C'est la partie désagréable pour les anciens.

Il est temps d'envisager de supprimer rsyslog au profit de systemd-journald et ses journaux binaires, non lisibles par beaucoup d'outils que vous utilisez sûrement.

Après la migration vers Debian 12, vous pouvez supprimer rsyslog avec ces commandes :

bash
apt-mark auto rsyslog
apt autoremove

Pour lire les journaux binaires, au lieu d'utiliser la commande tail (petite larme aux yeux), il faudra faire :

bash
journalctl -ef

Si vous gardez tout de même rsyslog (au moins pendant un temps), tous les logs seront écrits par défaut dans un seul fichier /var/log/syslog (les fichiers alternatifs peuvent être supprimés).

1.5/ Python3 : changement pour l'installation des paquets externes

Section intitulée « 1.5/ Python3 : changement pour l'installation des paquets externes »

Par défaut, il n'est pas autorisé d'installer des paquets Python non empaquetés par Debian.

Il est possible de passer outre cette interdiction, mais ce n'est pas conseillé.

Désormais, les paquets externes doivent être installés dans des environnements Python isolés, à l'aide de pipx ou d'un environnement virtuel (python -m venv).

Avant de mettre à jour, votre serveur doit être sauvegardé à distance, dans un autre datacenter. Et je conseille d'avoir aussi une copie chez un hébergeur indépendant et une copie chez soi.

Une mise à jour peut mal se passer, détruire des données, rendre le serveur non bootable : les bases de données doivent être sauvegardées par export SQL avant toute sauvegarde de fichier, et faites un snapshot en plus si c'est une machine virtuelle. Prévoyez du temps en cas de problème pour réparer, et soyez capable de faire un redémarrage en mode rescue.

Normalement, votre serveur est déjà à jour car vous êtes consciencieux, sinon il faut absolument être à jour avant :

bash
apt update
apt upgrade
reboot # si nécessaire

Une nouvelle section de dépôt fait son apparition. Sur un serveur, en théorie, ça ne sera pas utile mais c'est possible de la mettre : non-free-firmware.

Dans les fichiers /etc/apt/sources.list ou /etc/apt/sources.list.d/*, remplacez bullseye par bookworm :

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb http://security.debian.org bookworm-security main contrib non-free non-free-firmware

IMPORTANT : le nom à mettre est deb.debian.org qui va pointer automatiquement vers le dépôt le plus proche.

Ou se placer dans le répertoire et remplacer bullseye par bookworm en une seule commande :

bash
sed -i 's/bullseye/bookworm/g' *.list

2.2/ Mise à jour de la liste des paquets disponibles

Section intitulée « 2.2/ Mise à jour de la liste des paquets disponibles »
bash
apt update

Ce processus permet de mettre à jour les paquets du système qui n'ajoute pas de nouvelles dépendances sur de nouveaux paquets ou qui n'en enlève pas :

bash
apt -o Apt::Get::Assume-Yes=true -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade --without-new-pkgs

2.4/ Vérification de l'espace disque avant mise à jour complète

Section intitulée « 2.4/ Vérification de l'espace disque avant mise à jour complète »

Je conseille de nettoyer l'espace disque et de vérifier l'espace disponible avant la mise à jour complète :

bash
apt clean
apt --purge autoremove
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/.
bash
apt -o Apt::Get::Assume-Yes=true -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" full-upgrade
apt --purge autoremove

Si tout s'est bien passé :

bash
reboot

En cas de problème, analysez la situation avant de faire un reboot. Si vous préférez ne pas gérer ça vous-même, demandez une prestation.