Product SiteDocumentation Site

6.7. Mise à jour d'une distribution à la suivante

Un des éléments les plus marquants de Debian est sa capacité à mettre à jour un système d'une distribution stable vers la suivante (le fameux dist-upgrade, qui a contribué à la réputation du projet). Avec un peu d'attention, on peut ainsi migrer un ordinateur en quelques minutes ou dizaines de minutes, selon la rapidité d'accès aux sources de paquets.

6.7.1. Démarche à suivre

Comme le système Debian a le temps d'évoluer entre deux versions stables, on prendra soin de lire, avant d'entreprendre la mise à jour, les notes de publication.
In this section, we will focus on upgrading a Buster system to Bullseye. This is a major operation on a system; as such, it is never 100% risk-free, and should not be attempted before all important data has been backed up.
Another good habit which makes the upgrade easier (and shorter) is to tidy your installed packages and keep only the ones that are really needed. Helpful tools to do that include aptitude, deborphan, debfoster, and apt-show-versions (see Section 6.2.7, « Suivi des paquets installés automatiquement »). For example, you can use the following command, and then use aptitude's interactive mode to double check and fine-tune the scheduled removals:
# deborphan | xargs aptitude --schedule-only remove
Now for the upgrading itself. First, you need to change the /etc/apt/sources.list file to tell APT to get its packages from Bullseye instead of Buster. If the file only contains references to Stable rather than explicit codenames, the change isn't even required, since Stable always refers to the latest released version of Debian. In both cases, the database of available packages must be refreshed with the apt update command or the refresh button in synaptic (Section 6.2.1, « Initialisation »).
Une fois que ces nouvelles sources de paquets sont déclarées, la première chose à faire est une mise à niveau minimale avec apt upgrade ou autrec comme décrit dans la Section 6.2.3, « Mise à jour ». En réalisant cette mise à niveau en deux temps, cela facilite la tâche des outils de gestion de paquets et souvent assure que ceux-ci eux-mêmes sont dans leur dernière version et qu'ils disposent donc de correctifs et d'améliorations qui peuvent s'avérer nécessaires lors de la mise à niveau complète de la distribution.
Once this first upgrade is done, it is time to handle the upgrade itself, either with apt full-upgrade, aptitude, or synaptic (Section 6.7, « Mise à jour d'une distribution à la suivante »). You should carefully check the suggested actions before applying them: you might want to add suggested packages or deselect packages which are only recommended and known not to be useful. In any case, the frontend should come up with a scenario ending in a coherent and up-to-date Bullseye system. Then, all you need is to do is wait while the required packages are downloaded, answer the debconf questions and possibly those about locally modified configuration files, and sit back while APT does its magic.

6.7.2. Gérer les problèmes consécutifs à une mise à jour

Malgré tous les efforts des mainteneurs Debian, une mise à jour majeure du système d'exploitation cause parfois quelques soucis. Les nouvelles versions de certains logiciels sont parfois incompatibles avec les précédentes (évolution d'un format de données, comportement par défaut qui diffère, etc.). En outre, certains bogues passent inaperçus malgré la période de test précédant la publication d'une nouvelle version.
Pour anticiper les problèmes liés aux évolutions des logiciels mis à jour, il est utile d'installer le paquet apt-listchanges. Il affichera, au début d'une mise à jour de paquet, des informations relatives aux embarras possibles. Ces informations sont rédigées par les mainteneurs de paquets à l'intention des utilisateurs et placées dans des fichiers /usr/share/doc/paquet/NEWS.Debian et en tenir compte évitera toute mauvaise surprise.
You might sometimes find that the new version of a software doesn't work at all. This generally happens if the application isn't particularly popular and hasn't been tested enough; a last-minute update can also introduce regressions which are only found after the stable release. In both cases, the first thing to do is to have a look at the bug tracking system at https://bugs.debian.org/package, and check whether the problem has already been reported. If this is case, it will be also listed before the upgrade begins if you have apt-listbugs installed. If it hasn't, you should report it yourself with reportbug. If it is already known, the bug report and the associated messages are usually an excellent source of information related to the bug:
  • On peut y découvrir l'existence d'un correctif, disponible dans le rapport de bogue, qui permet alors de recompiler localement une version corrigée du paquet Debian (voir la Section 15.1, « Recompiler un paquet depuis ses sources ») ;
  • Parfois, d'autres utilisateurs ont trouvé un moyen de contourner le problème et partagent leur expérience dans l'historique du bogue ;
  • Enfin un paquet corrigé peut avoir été préparé par le mainteneur et être disponible en téléchargement.
Depending on the severity of the bug, a new version of the package may be prepared specifically for a new revision of the stable release. When this happens, the fixed package is made available in the proposed-updates section of the Debian mirrors (see Section 6.1.2.3, « Mises à jour proposées »). The corresponding entry can then be temporarily added to the sources.list file, and updated packages can be installed with apt or aptitude.
Sometimes the fixed package isn't available in this section yet because it is pending a validation by the Stable Release Managers. You can verify if that is the case on their web page. Packages listed there aren't available yet, but at least you know that the publication process is ongoing.

6.7.3. Cleaning Up after an Upgrade

APT garantit généralement une mise à niveau propre, en intégrant les dépendances nouvelles et mises à jour ou en supprimant les paquets conflictuels. Cependant, même s'il s'agit d'un outil formidable, il ne peut pas couvrir toutes les tâches auxquelles les utilisateurs et les administrateurs sont confrontées après une mise à niveau car elles requièrent une décision humaine.

6.7.3.1. Paquets retirés de l'archive Debian

Parfois, les administrateurs ftp de Debian retirent des paquets de l'archive Debian parce qu'ils contiennent des bogues critiques pour la publication, qu'ils ont été abandonnés par leur auteur en amont ou par le responsable du paquet ou qu'ils sont simplement arrivés en fin de vie. Dans ce cas, une nouvelle publication de Debian ne fournit plus le paquet. Pour trouver tous les paquets qui n'ont pas de source, utilisez la commande apt-show-versions :
$ apt-show-versions | grep "No available version"
Un résultat similaire peut être obtenu avec aptitude search ~o. Si les paquets trouvés ne sont plus nécessaires, ils doivent être supprimés du système, car ils ne feront plus l'objet de mises à jour pour les bogues critiques ou liés à la sécurité.

6.7.3.2. Paquets factices et de transition

Parfois, il peut être nécessaire de donner un nouveau nom à un paquet. Dans ce cas, l'ancien paquet est souvent conservé comme un paquet (presque) vide, dépendant du nouveau et n'installant que les fichiers obligatoires dans /usr/share/doc/paquet/. Ces paquets sont appelés paquets « factices » ou « transitoires ». Si le responsable du paquet a également modifié la section de ce paquet en oldlibs, des outils comme aptitude, deborphan, ou debfoster (voir l'encadré ALTERNATIVE deborphan et debfoster) peuvent repérer ces paquets pour suggérer leur suppression.
Malheureusement, il n’existe actuellement aucun moyen infaillible de s’assurer que ces paquets soient automatiquement supprimés ou choisis par les outils mentionnés ci-dessus. Une façon de vérifier si le système a encore certains de ces paquets installés est de rechercher dans les descriptions de paquet des paquets installés, puis de vérifier les résultats. Veillez à ne pas programmer les résultats pour une suppression automatique, car cette méthode peut entraîner des faux positifs :
$ dpkg -l | grep ^ii | grep -i -E "(transition|dummy)"
Comme le nouveau paquet est intégré en tant que dépendance du paquet de transition, il est généralement marqué comme étant installé automatiquement et peut être programmé pour être supprimé si vous essayez de retirer le paquet de transition de votre système. Dans ce cas, vous pouvez utiliser l'une des approches décrites dans les encadrés ASTUCE Supprimer et installer en même temps et Section 6.2.7, « Suivi des paquets installés automatiquement » pour supprimer sélectivement le paquet de transition.

6.7.3.3. Fichiers de configuration anciens ou inutilisés

Si la mise à jour s'est déroulée correctement, il se peut qu'il y ait des fichiers de configuration inutiles, provenant soit de dpkg (voir la Section 5.2.3, « Checksums, List of Configuration Files, et al. »), soit de ucf, soit de paquets supprimés. Ces derniers peuvent être purgés en utilisant apt autoremove --purge. Les fichiers de configuration qui ont été traités par dpkg ou ucf au cours du processus de mise à niveau ont laissé des contreparties avec un suffixe dédié, par exemple .dpkg-dist, .dpkg-old, .ucf-old. L'utilisation de la commande find ou locate peut aider à les retrouver. S'ils ne sont plus utiles, ils peuvent être supprimés.

6.7.3.4. Fichiers n'appartenant à aucun paquet

La charte Debian impose que les paquets ne laissent pas de fichiers derrière eux lorsqu'ils sont purgés. Violer ce principe est un bogue sérieux et vous le rencontrerez rarement. Si c'est le cas, signalez-le. Si vous êtes curieux, vous pouvez utiliser le paquet cruft ou cruft-ng pour vérifier que votre système ne contient pas de fichiers n’appartenant à aucun paquet.