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.
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:
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)"
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.