upgrade debian 12 to 13

upgrade debian 12 to 13

Imaginez la scène. Il est 22 heures un vendredi. Vous vous dites que c'est le moment idéal pour lancer ce projet de Upgrade Debian 12 To 13 sur votre serveur de production principal. Après tout, les montées de version Debian ont une réputation de solidité. Vous modifiez vos sources, vous lancez la commande magique, et tout semble se passer correctement jusqu'à ce que le processus s'arrête net sur un conflit de configuration Grub ou une rupture de dépendance liée à un dépôt tiers oublié. Soudain, le serveur ne redémarre plus. Votre base de données refuse de se lancer parce que la nouvelle version de la bibliothèque C a modifié certains comportements attendus. Vous passez les huit heures suivantes, les yeux injectés de sang, à essayer de restaurer des sauvegardes qui, vous vous en rendez compte trop tard, n'avaient pas été testées pour une restauration complète sur un système nu. J'ai vu ce scénario se répéter chez des dizaines de clients qui pensaient qu'une mise à jour logicielle n'était qu'une simple suite de commandes à copier-coller depuis un tutoriel trouvé en ligne. Le coût n'est pas seulement financier, il se mesure en perte de confiance de vos utilisateurs et en épuisement professionnel pour vos équipes techniques.

L'erreur fatale de la confiance aveugle dans le gestionnaire de paquets

La plupart des administrateurs pensent que le gestionnaire de paquets règlera tous les problèmes de compatibilité de manière autonome. C'est une illusion dangereuse. Dans mon expérience, le passage à une nouvelle version majeure du système d'exploitation n'échoue pas à cause du cœur de Debian lui-même, mais à cause de tout ce que vous avez ajouté par-dessus au fil des ans. Chaque script Python installé via pip en dehors d'un environnement virtuel, chaque binaire téléchargé directement dans /usr/local/bin, et chaque dépôt PPA ou tiers est une mine antipersonnel qui attend le déclenchement de la mise à jour.

Le processus échoue lamentablement quand on ne fait pas le ménage par le vide avant de commencer. Si vous avez des paquets en état "obsolète" ou "local" (ceux qui ne sont plus présents dans les dépôts officiels), ils bloqueront la résolution des dépendances de la version Trixie. J'ai vu des entreprises perdre des journées entières parce qu'un vieux paquet de surveillance réseau, installé en 2021 et jamais mis à jour, empêchait la montée de version de bibliothèques fondamentales. La solution n'est pas de forcer l'installation, mais d'identifier ces résidus avec des outils comme aptitude avant même de toucher à votre fichier sources.list.

Le mythe de la sauvegarde instantanée par snapshot

On se sent en sécurité avec les snapshots de machines virtuelles. C'est une erreur de jugement qui peut coûter cher. Un snapshot n'est pas une sauvegarde, c'est un état figé. Si votre Upgrade Debian 12 To 13 corrompt le système de fichiers ou si le problème ne se manifeste que trois jours après la mise à jour (par exemple, lors d'une rotation de journaux qui échoue ou d'une tâche cron hebdomadaire), revenir à un snapshot signifie perdre toutes les données produites entre-temps.

La bonne approche consiste à traiter cette transition comme une migration de données, pas seulement comme une mise à jour logicielle. Vous devez disposer d'une sauvegarde externalisée, vérifiée et dont la procédure de restauration est documentée. Dans un scénario réel que j'ai géré, un client avait pris un snapshot, mais la montée de version a provoqué une saturation de l'espace disque sur l'hyperviseur à cause de la croissance démesurée du fichier delta du snapshot. Résultat : non seulement le serveur Debian a planté, mais il a entraîné avec lui trois autres machines virtuelles sur le même hôte. Une catastrophe qui aurait pu être évitée en utilisant des sauvegardes au niveau applicatif et en prévoyant un espace disque suffisant pour le téléchargement et l'extraction des nouveaux paquets.

La gestion critique de l'espace disque

Pendant une transition de cette envergure, la consommation d'espace dans /var/cache/apt/archives explose. Si votre partition racine est remplie à 80 %, vous allez droit dans le mur. J'ai constaté qu'il faut prévoir au moins 5 Go d'espace libre pour un système minimal, et bien plus pour un serveur d'interface graphique ou une base de données complexe. Si le processus s'arrête au milieu d'une extraction à cause d'un disque plein, vous vous retrouvez avec un système "bancal" où la moitié des outils de base ne fonctionnent plus, rendant la réparation extrêmement pénible.

Ignorer les changements de comportement des logiciels majeurs

La transition PHP et Python

L'une des erreurs les plus fréquentes concerne les versions des langages de programmation. Passer de la version 12 à la version 13 de la distribution signifie souvent un saut de version majeure pour PHP ou Python. Vos scripts qui tournaient parfaitement peuvent soudainement cesser de fonctionner à cause de fonctions dépréciées ou supprimées. J'ai vu un site de commerce électronique rester hors ligne pendant six heures parce que le passage à la nouvelle version de Debian avait mis à jour PHP, et que le code du site n'était pas compatible avec les nouvelles exigences de typage strict du langage.

La solution est de tester votre code sur un environnement de pré-production identique à ce que sera la future version stable. Ne supposez pas que la compatibilité ascendante est garantie. Debian s'assure que le paquet s'installe, pas que votre code métier est de qualité suffisante pour supporter le changement.

Les services réseau et la sécurité

Les configurations de sécurité, notamment avec OpenSSH ou AppArmor, deviennent souvent plus strictes d'une version à l'autre. Si vous utilisez des algorithmes de chiffrement anciens pour vos clés SSH, vous pourriez vous retrouver enfermé hors de votre propre serveur après le redémarrage. J'ai dû intervenir physiquement dans des centres de données simplement parce qu'un administrateur avait oublié de vérifier que sa clé RSA de 1024 bits n'était plus acceptée par la nouvelle version du démon SSH. Avant de redémarrer, vérifiez toujours la configuration de vos services essentiels.

Guide de survie pour Upgrade Debian 12 To 13

Pour réussir cette opération, il faut arrêter de chercher la rapidité. Voici comment les professionnels procèdent réellement pour sécuriser le périmètre. On commence par une purge totale. On supprime les fichiers de configuration résiduels des paquets déjà supprimés (ceux marqués par 'rc' dans dpkg). On s'assure que le système actuel est parfaitement à jour et qu'aucun paquet n'est "retenu" (on hold).

Ensuite, on prépare le terrain. Le changement du fichier sources.list ne doit pointer que vers les dépôts officiels. On retire tout ce qui vient de Docker, Nodesource, ou d'autres fournisseurs tiers. Ces dépôts doivent être réactivés un par un après la montée de version, une fois qu'on a vérifié qu'ils proposent bien des paquets pour la nouvelle branche. C'est à cette étape que la plupart des gens échouent car ils essaient de tout mettre à jour d'un coup. C'est le meilleur moyen de créer un conflit de bibliothèques insoluble que même l'option "fix-broken" d'apt ne pourra pas résoudre.

Le processus se déroule en deux temps : d'abord une mise à jour minimale du système (apt upgrade --without-new-pkgs) pour mettre à jour les outils de gestion des paquets eux-mêmes, puis la mise à jour complète (full-upgrade). Pendant cette phase, le système va vous poser des questions sur les fichiers de configuration. La règle d'or : si vous ne savez pas exactement ce que vous avez modifié dans un fichier, examinez les différences (le "diff"). Ne remplacez pas aveuglément vos fichiers de configuration personnalisés par ceux des mainteneurs, sinon vous perdrez vos réglages de pare-feu, vos optimisations de base de données ou vos limites d'utilisateurs.

Comparaison de l'approche amateur contre l'approche professionnelle

Pour bien comprendre l'enjeu, regardons comment deux administrateurs gèrent la mise à jour d'un serveur Web standard.

L'administrateur amateur se connecte, change "bookworm" en "trixie" dans son fichier de dépôts et lance immédiatement un "apt full-upgrade -y". Il ne lit pas les messages qui défilent. Le système le prévient qu'il va supprimer des paquets critiques comme MariaDB pour résoudre un conflit, mais avec l'option "-y", il ne le voit pas. Au redémarrage, le serveur Web ne trouve plus sa base de données. L'administrateur essaie de réinstaller MariaDB, mais les nouvelles dépendances exigent une version de bibliothèque qui entre en conflit avec un vieux dépôt tiers qu'il a laissé actif. Le serveur reste indisponible pendant que l'administrateur cherche désespérément des solutions sur des forums, tentant des commandes de plus en plus risquées qui finissent par casser le noyau Linux.

L'administrateur professionnel, lui, commence par un audit. Il liste tous les paquets installés manuellement. Il effectue une sauvegarde complète des données et de la configuration sur un serveur distant. Il lance la mise à jour étape par étape, sans l'option "-y". Lorsqu'il voit qu'un paquet important va être supprimé, il s'arrête, analyse pourquoi, et ajuste sa stratégie. Il vérifie les fichiers de journaux après chaque étape. Si un service échoue, il sait exactement à quelle étape cela s'est produit. Le temps total d'indisponibilité est peut-être plus long sur le papier à cause de la préparation, mais il n'y a aucune surprise désagréable. Le serveur redémarre avec ses services opérationnels car les conflits ont été résolus avant qu'ils ne deviennent bloquants.

La gestion des dépôts tiers et des paquets épinglés

Un point qui piège même les utilisateurs avancés est la "priorité des paquets" (Apt Pinning). Si vous avez forcé l'utilisation d'une version spécifique d'un logiciel pour des raisons de compatibilité par le passé, cette règle restera en vigueur pendant la montée de version. Cela créera des erreurs de dépendances circulaires impossibles à dénouer.

J'ai rencontré un cas où un serveur refusait de mettre à jour le noyau parce qu'un driver propriétaire pour une carte RAID avait été épinglé à une version spécifique qui n'était plus compatible avec les nouveaux en-têtes du noyau. Le système essayait de garder le vieux driver tout en installant le nouveau noyau, ce qui est techniquement impossible. La solution est de supprimer toutes les règles de pinning dans /etc/apt/preferences avant de commencer. Vous devez laisser le champ libre au gestionnaire de paquets pour qu'il puisse calculer le chemin de mise à jour le plus logique. Une fois le système stable en version 13, vous pourrez alors réfléchir à réinstaller vos versions spécifiques si elles sont toujours nécessaires.

Le cas particulier de Docker et des conteneurs

Si votre machine hôte fait tourner Docker, ne faites pas l'erreur de croire que les conteneurs vous protègent de tout. La mise à jour du système hôte change le noyau et potentiellement la version de Docker Engine. J'ai vu des environnements où les conteneurs ne pouvaient plus communiquer entre eux après une mise à jour parce que les règles iptables générées par la nouvelle version de Docker étaient différentes de l'ancienne. Avant de lancer le processus, arrêtez tous vos conteneurs proprement. Cela réduit la charge sur le système et évite des corruptions de données dans les volumes montés si le système doit redémarrer brutalement.

Vérification de la réalité

On ne va pas se mentir : réussir une mise à jour majeure de distribution sur un serveur complexe n'est jamais une simple formalité. Si votre installation Debian traîne des années de configurations diverses, de scripts "maison" et de bidouilles rapides pour corriger un problème un vendredi soir, il y a de fortes chances que ça casse. La réalité brutale est que, parfois, il est plus rapide, moins cher et beaucoup plus sûr de repartir d'une installation fraîche de Debian 13 et de migrer vos données et vos fichiers de configuration propres.

Passer son temps à essayer de réparer une mise à jour qui a mal tourné est une bataille perdue d'avance contre l'entropie du système. Si vous n'êtes pas capable de reconstruire votre serveur à partir de vos sauvegardes et de vos scripts de déploiement en moins de deux heures, c'est que votre infrastructure est fragile. La montée de version est le test de vérité ultime de votre gestion système. Si elle échoue, ne blâmez pas les outils. Blâmez l'absence de rigueur dans la maintenance des années précédentes. La réussite n'est pas une question de chance, c'est le résultat d'une préparation maniaque et d'une méfiance totale envers les automatismes. Si vous n'êtes pas prêt à passer trois heures à lire des fichiers de logs et des notes de version avant de taper la première commande, vous n'êtes pas prêt pour cette transition. Quel que soit le niveau d'expertise, le risque zéro n'existe pas, et celui qui vous prétend le contraire n'a probablement jamais géré de parc machine sérieux sous pression.

À ne pas manquer : application pour tapis de
CT

Chloé Thomas

Dans ses publications, Chloé Thomas met l'accent sur la clarté, l'exactitude et la pertinence des informations.