From Fedora Project Wiki

Mise à niveau du système avec la commande dnf system-upgrade


Qu'est-ce que la mise à niveau du système avec la commande dnf-system-upgrade ?

dnf-plugin-system-upgrade est un greffon du gestionnaire de paquets dnf qui prend en charge les mises à niveau du système. C'est la méthode de mise à niveau recommandée depuis Fedora 21.

Que fait la commande dnf system-upgrade ?

La commande dnf system-upgrade permet de passer votre système sur une nouvelle version de Fedora, en utilisant un mécanisme similaire à celui utilisé pour la mise à jour de paquets hors ligne. Les paquets à jour sont téléchargés alors que le système continue à fonctionner normalement, puis le système redémarre dans un environnement particulier (mis en œuvre en tant que cible systemd) pour les installer. Une fois l'installation terminée, le système redémarre à nouveau sur la nouvelle version de Fedora.

Comment l'utiliser ?

  1. Faites une sauvegarde de vos données importantes. Tout changement sur le système est potentiellement à risques ; préparez-vous à toute éventualité ! Dans le cas où vous mettez votre station de travail à niveau, il est aussi recommandé de téléchager une Image live de Fedora Workstation et de vous assurer que votre matériel (cartes graphiques, cartes wifi, etc.) fonctionne correctement avec le dernier noyau et les derniers pilotes.
  2. Mettez votre système à jour en utilisant le système de mise à jour standard pour votre ordinateur ou dnf:
    # dnf upgrade --refresh

    Il est recommandé de redémarrer votre ordinateur ; en particulier sir vous venez d'installer un nouveau noyau.

    • Veuillez noter qu'il y a un problème lorsque vous utilisez un thème de démarrage qui n'est pas le thème plymouth par défaut. Si c'est votre cas, lisez la description du problème pour savoir s'il n'affectera pas votre mise à niveau.
    • Vérifiez attentivement votre configuration de DNF dans le fichier /etc/dnf/dnf.conf. Si vous avez effectué des personnalisations (qu'elles soient manuelles ou par l'intermédiaire de tierces parties), il est recommandé de revenir à la configuration par défaut avant de mettre votre système à jour et à niveau.
  3. Installez le paquet Package-x-generic-16.pngdnf-plugin-system-upgrade :
    # dnf install dnf-plugin-system-upgrade
  4. Téléchargez les paquets à jour :
    # dnf system-upgrade download --refresh --releasever=33

    Modifiez le numéro de version --releasever= si vous désirez passer à une version différente. La plupart de gens désire passer à la dernière version stable, qui est 33, mais si vous utilisez actuellement Fedora 31, il se peut que vous vouliez passer à Fedora 32. Vous pouvez aussi utiliser 34 pour une mise à niveau vers Branched ou rawhide pour une mise à niveau vers Rawhide (attention : ces versions ne sont pas stables).

    • Si certains de vos paquets ont des dépendances non satisfaites, la mise à niveau s'arrêtera jusqu'à ce que vous la redemandiez en ajoutant l'option --allowerasing à la commande. Cela se produit souvent avec des paquets installés depuis des dépôts de tierces parties pour lesquels un dépôt à jour n'a pas encore été publié. Étudiez attentivement la sortie de la commande et examinez les paquets qui vont être retirés. Aucun d'entre-eux ne devrait être essentiel pour assurer le fonctionnement attendu de votre système, mais certains peuvent jouer significativement sur votre productivité.
    • Dans le cas de dépendances non satisfaites, vous pouvez obtenir plus de détails en ajoutant l'option --best à la commande.
  5. Déclenchez le processus de mise à niveau :
     # dnf system-upgrade reboot

    Cela provoque un redémarrage immédiat de votre machine. Le système devrait redémarrer à nouveau sur Fedora en utilisant le même noyau, mais cette fois le processus de mise à niveau est signalé sur l'écran de démarrage.

  6. Attendez que le processus de mise à niveau se termine.

Questions fréquentes

Comment puis-je signaler les anomalies rencontrées lors d'une mise à niveau ?

En premier lieu, consultez Common F33 bugs ou Common F34 bugs pour vérifier que le problème n'est pas un problème important déjà connu. Si ce n'est pas le cas, faites une recherche sur les anomalies existantes. Si vous ne trouvez aucune anomalie qui corresponde à vos symptômes, vous pouvez remplir un rapport d'anomalie depuis la page de recherche. Suivez les instructions sur la manière de rapporter une anomalie indiquées sur ce fichier README et sur man dnf.plugin.system-upgrade.

Si vous rencontrez des problèmes après la mise à niveau avec un paquet particulier, remplissez un rapport d'anomalie sur ce paquet.

Est-ce que la commande dnf system-upgrade vérifie les programmes qu'elle exécute ou installe durant la mise à niveau ?

Oui. Les clés de signature de paquets pour les versions nouvelles de Fedora sont envoyées aux anciennes versions afin de permettre à dnf de vérifier l'intégrité des paquets qu'il télécharge. Vous pouvez désactiver cette fonction avec le paramètre --nogpgcheck si besoin (cela n'est pas recommandé car vous êtes sujet aux attaques par des logiciels malicieux).

Est-ce que les paquets en provenance des dépôts de tierces parties sont mis à niveau ?

Oui, si ces dépôts sont configurés comme des dépôts dnf normaux et ne codent pas en dur le chemin du dépôt. Les dépôts de tierces parties d'usage courant fonctionnent en général très bien, mais si vous essayez de mettre à niveau avant, ou juste après, une nouvelle parution de Fedora, il est possible que les chemins vers ces dépôts n'aient pas encore été mis à jour et que Fedora ne parvienne pas à trouver les paquets. Cela empêche généralement la mise à niveau de Fedora, bien que vous puissiez faire la mise à jour des paquets en provenance de ces dépôts ultérieurement.

Puis-je effectuer une mise à niveau à partir d'une version en fin de vie  ?

Notez bien que Fedora vous déconseille fortement d'exécuter une version en fin de vie sur un système en production, ou sur un système connecté à l'Internet quelles qu'en soient les circonstances. D'abord et avant tout, vous ne devriez jamais permettre à un déploiement de Fedora d'atteindre la version fin de vie.

Ceci dit, si vous êtes sur une version de fin de vie plus récente que Fedora 20, et que vous ne pouvez pas vous contenter de simplement la laisser de côter ou de la redéployer, vous pouvez essayer de la mettre à niveau bien que ce soit une opération moins testée et pour laquelle vous obtiendrez moins d'assistance. Vous pouvez essayer de monter de version en version jusqu'à atteindre la version courante, ou essayer d'atteindre la version courante en une seule opération. Il est difficile de dire avec certitude laquelle de ces deux solutions a le plus le chance d'aboutir.

Si vous essayer de mettre à niveau à travers plus de deux versions en une seule opération, lisez aussi la réponse suivante.

Si vous utilisez Fedora 20 ou une version antérieure, vous ne pouvez pas mettre à niveau avec dnf system-upgrade seulement. Vous devez mettre à niveau au moins une partie du chemin en utilisant la commande nue dnf ou yum. Vous pouvez soit mettre au niveau de Fedora 21 de cette façon et mettre le reste à niveau avec dnf system-upgrade, soit essayer de mettre à niveau le tout uniquement avec la commande nue dnf ou yum. Notez que cette méthode n'est pas en soi une méthode officielle recommandée pour la mise à niveau. Pour être franc, toute mise à niveau depuis Fedora 20, ou depuis une version antérieure, se fait à vos risques et périls.

De combien de versions puis-je monter en niveau en une seule opération ?

Le scénario le plus courant est de monter d'une version (p. ex. de Fedora 32 à Fedora 33). Néanmoins, durant le premier mois environ après la parution d'une nouvelle version, des mises à jour depuis l'antépénultième version sont prises en charge, dans le sens où nous incluons ce scénario dans les critères de parution de Fedora, en assurons le test au moins pour des installations propres des jeux de paquets pris en charge, et regarderons les rapports d'anomalies pour de telles mises à niveau comme importants. Le cycle de vie des versions de Fedora est spécialement conçu pour fournir cette 'durée de grâce' approximative d'un mois, de manière à ce que vous puissiez choisir de ne réaliser des mises à niveau que sur des versions à longue durée de vie, une version sur deux, plutôt que sur chacune des versions.

Environ un mois après la parution de la nouvelle version, l'antépénultième version passe en fin de vie, point auquel la question précédente se pose. Par ailleurs, cette mise à niveau est encore susceptible de fonctionner correctement durant quelques temps après le passage en fin de vie.

Les mises à niveau effectuant un saut de numéro de version supérieur à 2 ne sont pas prises en charge, et les problèmes rencontrés ne seront probablement pas considérés comme importants. Notez que toute mises à niveau avec un saut de numéro de version supérieur à 2 sont par définition des mises à niveau depuis une version en fin de vie, et qu'en conséquence, la question précédente se pose également ici.

Lors d'une mise à jour sautant plusieurs numéros de version, il est possible que vous deviez importer la clé de signature des paquets de la version cible à la main. Les versions de Fedora disposent en général des clés de signature des paquets pour les deux versions suivantes (parce qu'elles passent en fin de vie avant que la version N+3 ne soit branched). Avant Fedora 22, ce n'était pas toujours le cas que chacune des versions disposât des clés pour les deux versions suivantes. Si dnf se plaint à propos d'une clé manquante, c'est ce que vous devez faire.

Puis-je utiliser dnf system-upgrade pour passer au niveau d'une pré-version (p. ex. une version Beta) ?

Oui. Il devrait toujours être possible d'essayer une telle mise à niveau. Bien sûr, cette fonction est sujette à des plantages temporaires comme tous les autres aspects d'une pré-version, et en général, plus la version en question est jeune, plus un fonctionnement sans problème est improbable.

Optional post-upgrade tasks

These are tasks you can do after a successful upgrade. They are mostly intended for power users. If you are a general user who doesn't use terminal daily, you don't need to worry about this.

Update system configuration files

Most configuration files are stored in /etc. If there are any updates to them and you touched some of those files before, RPM creates new files with either .rpmnew suffix (the new default config file), or .rpmsave suffix (your old config file backed up). You can search for these files, go through the changes and make sure your custom changes are still included and the new defaults are applied as well. A tool that tried to simplify this is rpmconf. Install the package, and then use it as:

$ sudo rpmconf -a

See more information in its manual page.

Clean up old packages

You can see list of packages with broken dependencies like this:

$ sudo dnf repoquery --unsatisfied

Ideally there should be none. If there are some, consider removing them, because they are not likely to work properly anyway.

You can see duplicated packages (packages with multiple versions installed) like this:

$ sudo dnf repoquery --duplicated

For ordinary packages, just the latest version should be installed. But there can be exceptions to the rule, only remove what you are sure you no longer need.

Some packages might stay on your system while they have been removed from the repositories. See them using:

$ sudo dnf list extras

If you don't use these, you can consider removing them. Please note that this list is only valid if you have a fully updated system. Otherwise you'll see all installed packages which are no longer in the repositories, because there is a newer update available. So before acting on these, make sure you have run sudo dnf update and generate the list of extra packages again. Also, this list might contain packages installed from third-party repositories for which an updated repository hasn't been published yet. This often involves e.g. RPM Fusion or Dropbox.

You can remove no-longer-needed packages using:

$ sudo dnf autoremove

but beware that dnf decides that a package is no longer needed if you haven't explicitly asked to install it and nothing else requires it. That doesn't mean that package is not useful or that you don't use it. Only remove what you are certain you don't need. There's a known bug in PackageKit which doesn't mark packages as user-installed, see bug 1259865. If you use PackageKit (or GNOME Software, Apper, etc) for installation, this output might list even important apps and system packages, so beware.

Resolving post-upgrade issues

Only follow up these steps if you have troubles with your upgraded system. It should not be needed in the vast majority of upgrades.

Rebuilding RPM database

If you see warnings when working with RPM/DNF tools, your database might have gotten corrupted for some reason. It is possible to rebuild it and see if resolves your issues. Always back up /var/lib/rpm/ first. To rebuild the database, run:

$ sudo rpm --rebuilddb

Using distro-sync to resolve dependency issues

The system upgrade tool uses distro-sync method by default. If your system stayed partly unupgraded or you see some package dependency issues, you might try to fix it by running another distro-sync manually. This tries to make your installed packages exactly the same version as in currently enabled repositories, even if it meant downgrading some packages:

$ sudo dnf distro-sync

A stronger variant also allows to remove package for which package dependencies can't be satisfied. Always carefully review which packages are going to be removed before confirming this:

$ sudo dnf distro-sync --allowerasing

Relabel files with latest SELinux policy

If you see warnings that some actions were not allowed because of current SELinux policy, it might be a case of having some files incorrectly label with SELinux permissions. This might happen in case of some bug or if you had SELinux disabled in some point of time in the past. You can relabel the whole system by running:

$ sudo touch /.autorelabel

and rebooting. The next boot will take a long time and will check and fix all SELinux labels on all your files.