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 en ligne de commande 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:
    $ sudo dnf upgrade --refresh

    N’écrivez pas $ dans ces commandes, cela indique simplement que ce que vous saisissez est l’invite de commande d’un utilisateur non root.

    Après la mise à jour, il est recommandé de redémarrer votre ordinateur ; en particulier si 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 :
    $ sudo dnf install dnf-plugin-system-upgrade
  4. Téléchargez les paquets à jour :
    $ sudo dnf system-upgrade download --refresh --releasever=28

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

    • Si vous passez à Rawhide, vous devrez importer la clef GPG rpm correspondante. Cela sera le plus grand numéro de clef de version dans /etc/pki/rpm-gpg/. Par exemple, si la version 29 est embranchée, alors vous devrez chercher 30, s'il n'y a aucune version embranchée alors cela sera 29.
      $ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-30-primary
  5. 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é.
  6. Dans le cas de dépendances non satisfaites, vous pouvez obtenir plus de détails en ajoutant l’option --best à la commande. </ul>
  7. Déclenchez le processus de mise à niveau :
    $ sudo 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.

  8. Attendez que le processus de mise à niveau se termine. </ol>

    Questions fréquentes

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

    En premier lieu, consultez Common F28 bugs ou Common F29 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 27 à Fedora 28). 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.

    Tâches facultatives d’après mise à niveau

    Il y a des tâches que vous pouvez réaliser après une mise à niveau réussie. Elles concernent essentiellement les utilisateurs chevronnés. Si vous êtes un utilisateur de base qui ne fait pas un usage quotidien du terminal, vous pouvez les ignorer.

    Mise à jour des fichiers de configuration

    La plupart des fichiers de configuration sont stockés dans le dossier /etc. Si plusieurs de ces fichiers sont mis à jour et que vous les avez modifiés auparavant, RPM crée de nouveaux fichiers, soit avec le suffix .rpmnew (le nouveau fichier de configuration par défaut), soit avec le suffixe .rpmsave (la sauvegarde de votre ancien fichier de configuration). Vous pouvez rechercher ces fichiers, examiner les changements et vous assurer que vos personnalisations sont encore incluses, et que les nouvelles valeurs par défaut sont appliquées elles aussi. Un outil qui essaye de simplifier cette tâche est rpmconf. Installez le paquet et utilisez le avec :

    $ sudo  rpmconf -a

    Lisez la page de manuel de ce paquet pour plus d’information.

    Se débarrasser des paquets inutiles

    Vous pouvez obtenir une liste des paquets avec des dépendances cassées avec la commande suivante :

    $ sudo dnf repoquery --unsatisfied

    Idéalement, il ne devrait pas y en avoir. S’il en existe, envisagez de les supprimer parce qu’ils ont peu de chances de fonctionner correctement..

    Vous pouvez voir les paquets en double (les paquets installés en plusieurs versions) avec la commande suivante :

    $ sudo  dnf repoquery --duplicated

    Pour les paquets ordinaires, seule la dernière version devrait être installée. Il existe cependant des exceptions à la règle, c’est pourquoi vous ne devez supprimer que les paquets dont vous n’avez à coup sûr plus besoin.

    Certains paquets peuvent subsister dans votre système alors qu’ils sont retirés des dépôts. Vous pouvez en obtenir la liste avec la commande :

    $ sudo dnf list extras

    Si vous n’utilisez pas ces fichiers, vous pouvez envisager de les supprimer. Notez bien que cela n’est valide que si vous avez un système complètement à jour. Autrement vous verrez tous les paquets qui ne sont plus dans les dépôts parce qu’une nouvelle version est disponible. C’est pourquoi, avant de les supprimer, assurez-vous d’avoir exécuté la commande $ sudo dnf update et recherchez à nouveau cette liste de paquets. De plus, cette liste peut comprendre des paquets installés depuis de dépôts de tierces parties pour lesquels un dépôt à jour n’a pas encore été publié. Cela est souvent le cas pour des dépôts tels que RPM Fusion ou Dropbox.

    Vous pouvez retirer les paquets qui ne sont plus nécessaires avec la commande :

    $ sudo dnf autoremove

    mais soyez conscient que dnf decide qu’un paquet n’est plus nécessaire si vous n’en avez pas explicitement demandé l’installation et que rien ne le requiert plus.Cela ne signifie pas que ce paquet est inutile ou que que vous ne l’utilisez pas. Ne retirez que les paquets dont vous n’avez à coup sûr plus besoin. Il y a une anomalie connue dans PackageKit qui ne marque pas des paquets comme installés par l’utilisateur (voir l’anomalie 1259865. Si vous utilisez PackageKit (ou GNOME, Apper, etc.) pour installer, cette sortie peut même lister des applications importantes et des paquets systèmes. Donc soyez en conscient et vigilant.

    Résolution des problème post-installation

    Ne suivez ces instructions que si vous rencontrez des problèmes avec votre système mis à niveau. Elles ne devraient pas être nécessaires dans la grande majorité des cas de mise à niveau.

    Reconstruction de la base de données RPM

    Si vous apercevez des messages d’avertissement lorsque vous travaillez avec les outils RPM/DNF, votre base de données peut avoir été corrompue pour une raison ou pour une autre. Il est possible de la reconstruire et de voir si cela résout vous problèmes. Faites toujours une sauvegarde de /var/lib/rpm/ avant toute chose. Pour reconstruire la base de données, exécutez :

    $ sudo rpm --rebuilddb

    Utilisation de distro-sync pour résoudre les problèmes de dépendances

    L’outil de mise à niveau du système utilise la méthode distro-sync par défaut. Si votre système n’est pas totalement mis à jour, ou si certains paquets présentent des problèmes de dépendances, vous pouvez essayer de les résoudre en exécutant à nouveau la commande distro-sync à la main. Cela essaye de mettre vos paquets installés à exactement la même version que celles des dépôts courants, même si cela conduit à rétrograder certains paquets :

    $ sudo dnf distro-sync

    Une variante plus radicale autorise également le retrait des paquets pour lesquelles certaines dépendances ne peuvent être satisfaites. Passez toujours en revue avec la plus grande attention quels paquets vont être retirés avant de confirmer cette commande:

    $ sudo dnf distro-sync --allowerasing

    Ré-étiqueter les fichiers avec la dernière politique SELinux

    Si vous apercevez des messages d’avertissement vous disant que certaines actions n’ont pas été autorisées à cause de la politique SELinux courante, il est possible que certains fichiers aient été incorrectement étiquetés avec les permissions SELinux. Cela peut se produire dans le cas de certaines anomalies ou si vous avez SELinux désactivé durant certains moments du passé. Vous pouvez ré-étiqueter le système entier en exécutant :

    $ sudo touch /.autorelabel
    et en redémarrant. Le prochain redémarrage prendra beaucoup de temps et vérifiera et corrigera toutes les étiquettes SELinux de tous vos fichiers.