Si vous utilisez un système Linux Debian ou basé sur Debian (comme Unbuntu ou Linux Mint) en ligne de commande, vous avez sans doute déjà utilisé l’instruction apt-get, apt ou encore aptitude. Grâce à ces dernières, vous pouvez installer et mettre à jour des paquets sur votre distribution Linux. Mais quelle est la différence entre un apt update, apt upgrade, apt dist-upgrade ou apt full-upgrade ? Laquelle de ces options devriez-vous utiliser ?

Les mises à jour en ligne de commande

APT est une interface de gestion des paquets des systèmes Linux Debian. apt-get est le programme de base permettant d’installer, de mettre à jour ou de supprimer des paquets. Depuis Debian 8 Jessie, un équivalent apt existe avec une interface colorée, plus agréable pour l’utilisateur.

L’utilisation d’apt-get reste toutefois recommandée dans les scripts Shell sinon c’est apt qu’il convient maintenant d’utiliser. D’autres gestionnaires existent, notamment aptitude proposant une interface pour de gestion.

apt update

# apt update

L’instruction update va rechercher les mises à jour disponibles pour votre système et vos programmes installés en se basant sur les sources définies dans /etc/apt/source.list. Un fichier d’index est créé pour lister les mises à jour disponibles. Il servira de référence pour l’installation de nouvelles mises à jour.

Les actions des commandes apt-get update, apt update ou encore aptitude update sont similaires.

apt upgrade

# apt upgrade

L’option upgrade installe les mises à jour identifiée avec apt update sans supprimer les paquets installés. S’il y a de nouvelles dépendances à installer, les paquets peuvent être installés ou non selon le type de commande utilisée apt, apt-get ou aptitude.

C’est la méthode la moins risquée puisque seuls les programmes déjà installés sont mis à jour. Cette commande est donc plus sûre mais cela ne signifie pas pour autant qu’elle est à privilégier.

apt dist-upgrade et apt full-upgrade

# apt full-upgrade

Les options dist-upgrade ou full-upgrade sont identiques, utiliser l’une ou l’autre revient donc au même.

Ces deux options agissent plus « intelligemment » que la fonction upgrade. En plus de mettre à jour les paquets existants, elles vont également être en mesure de gérer les dépendances. Si de nouveaux paquets doivent être installés pour satisfaire des dépendances, ils le seront. Ceux qui ne sont plus utiles, sont supprimés et les paquets essentiels ou requis, sont installés. Les paquets les plus importants sont traités en priorité.

Cette commande est moins conservatrice et peux causer des résultats inattendus en raison des possibilités de nouvelles installations ou de suppressions. Ne pas faire l’amalgame de « dist » avec distribution, la terminologie n’a rien n’a voir. La terminologie « full-upgrade » est maintenant plus adaptée et ne porte pas à confusion.

Dois-je utiliser apt upgrade ou apt full-upgrade?

Maintenant que vous connaissez la différence entre un apt upgrade ou un apt full-upgrade, vous vous posez peut-être la question suivante : quelle instruction dois-je utiliser pour mettre à jour mon système Linux basé sur Debian ?

Dans un environnement hautement critique et qui doit rester stable, la commande upgrade est plus sûre. Si vous désirez faire une opération de mise à jour courante et minorer le risque, il en est de même. Seuls les paquets actuellement installés sont traités. Les risques de dysfonctionnement suite à la suppression ou l’installation d’un nouveau paquet sont réduits.

Dans la plupart des autres cas, l’option dist-upgrade ou full-upgrade est à privilégier, car vous obtiendrez toutes les dernières mises à jour sur votre système et du noyau. Lorsque vous souhaitez changer de version majeure de distribution (par exemple pour passer de Debian 8 à Debian 9), c’est cette commande que vous devez utiliser.

Dans tous les cas, je vous conseille vivement de réaliser une sauvegarde avant toute mise à jour et de réaliser des essais au préalable sur un environnement de test.

En résumé

Pour conclure, je vous adresse un petit tableau qui résume les fonctions de chaque commande :

apt updateapt-get updateaptitude updateTélécharge les informations des paquets à partir des sources configurées
apt upgradeapt-get upgradeaptitude safe-upgradeMets à jour les paquets installés sans en supprimer. Quelques différences de comportement :
apt-get upgrade : N'installe pas de nouveaux paquets
apt upgrade : Installe de nouveau paquets pour satisfaire des dépendances si nécessaire
aptitude safe-upgrade : Les paquets installés ne sont pas retirés sauf s'ils sont inutilisés
apt full-upgradeapt-get dist-upgradeaptitude full-upgradeInstalle les versions candidates des paquets installés en installant ou en supprimant d’autres paquets si nécessaire

Vous obtiendrez plus de détails dans le manuel, en tapant man apt, man apt-get ou encore man aptitude. Quel gestionnaire préférez-vous utiliser ?

Partagez cet article

Avez-vous trouvé cet article utile ?
Article utile ?

7 commentaires

  1. « L’option upgrade installe les mises à jour identifiée avec apt update sans supprimer les paquets installés et sans en installer de nouveaux. » Faux 😉
    Cʼest le comportement de `apt-get upgrade`
    apt upgrade` peut installer de nouveaux paquets (mais pas en supprimer).
    Lʼéquivalent serait `apt-get upgrade –with-new-pkgs`

    1. Bonjour Jean Pierre,
      Avec-vous une source ? Car ce que vous décrivez est le comportement de dist-upgrade.
      apt upgrade met à jour les paquets existant sans en installer de nouveau. C’est vérifiable sur la doc de la commande :

      upgrade
      upgrade is used to install the newest versions of all packages
      currently installed on the system from the sources enumerated in
      /etc/apt/sources.list. Packages currently installed with new
      versions available are retrieved and upgraded; under no
      circumstances are currently installed packages removed, or packages
      not already installed retrieved and installed. New versions of
      currently installed packages that cannot be upgraded without
      changing the install status of another package will be left at
      their current version. An update must be performed first so that
      apt-get knows that new versions of packages are available.

      dist-upgrade
      dist-upgrade in addition to performing the function of upgrade,
      also intelligently handles changing dependencies with new versions
      of packages; apt-get has a « smart » conflict resolution system, and
      it will attempt to upgrade the most important packages at the
      expense of less important ones if necessary. So, dist-upgrade
      command may remove some packages. The /etc/apt/sources.list file
      contains a list of locations from which to retrieve desired package
      files. See also apt_preferences(5) for a mechanism for overriding
      the general settings for individual packages.

      Et Wikipedia https://fr.wikipedia.org/wiki/Advanced_Packaging_Tool

      Les autres commandes de apt-get les plus utilisées sont apt-get update, apt-get upgrade et apt-get dist-upgrade :
      apt-get update met à jour la liste des paquets disponibles à partir des sources du fichier /etc/apt/sources.list ;
      apt-get upgrade remplace chaque paquet installé par la dernière version disponible ;
      apt-get dist-upgrade remplace chaque paquet installé par la dernière version disponible, installe les paquets supplémentaires nécessaires et supprime les paquets devenus inutiles.

      1. Bonjour David,
        C’est moi qui suis derrière la remarque qu’a partagé Jean-Pierre.

        Il s’agit d’un changement de comportement qui de mémoire a été documenté au moment de sa mise en place, puis a été rapidement oublié. Mais les pages de manuel sont bien à jour, et on constate la différence en allant lire la section « upgrade » de ces deux pages :
        – man apt-get
        – man apt

        Les correspondances entre apt-get, apt et aptitude sont :
        apt-get upgrade / apt upgrade –no-new-pkgs / aptitude safe-upgrade –no-new-installs
        apt-get upgrade –with-new-pkgs / apt upgrade / aptitude safe-upgrade
        apt-get dist-upgrade / apt full-upgrade / aptitude full-upgrade

        1. Bonjour vv222,
          j’ai fais des vérifications et je constate qu’il y a une différence de fonctionnement entre apt et apt-get :
          man apt
          upgrade (apt-get(8))
          La commande upgrade permet d’installer les mises à jour disponibles de tous les paquets présents sur le système en utilisant les sources énumérées dans sources.list(5). De nouveaux paquets
          seront installés si cela est nécessaire pour satisfaire des dépendances, mais les paquets installés ne seront jamais supprimés. Si la mise à jour d’un paquet nécessite la suppression d’un
          paquet installé, la mise à jour n’est pas réalisée.

          man apt-get
          upgrade
          La commande upgrade permet d’installer les versions les plus récentes de tous les paquets présents sur le système en utilisant les sources énumérées dans /etc/apt/sources.list. Les paquets
          installés dont il existe de nouvelles versions sont récupérés et mis à niveau. En aucun cas des paquets déjà installés ne sont supprimés ; de même, des paquets qui ne sont pas déjà installés
          ne sont ni récupérés ni installés. Les paquets dont de nouvelles versions ne peuvent pas être installées sans changer le statut d’installation d’un autre paquet sont laissés dans leur version
          courante. On doit d’abord exécuter la commande update pour que apt-get connaisse l’existence de nouvelles versions des paquets.

          Donc j’en conclus que : apt upgrade peut installer de nouveau paquets pour satisfaire des dépendances et apt-get upgrade n’installe pas de nouveaux paquets. Il y a une erreur pour la commande apt upgrade dans l’article. J’ai récupéré ces infos sur une Debian Stretch.

  2. Bonjour,
    Ce n’est pas moi, qui dit ça mais un Administrateur qui s’appelle vv222 Sur Debian Facile, mais bon….

    Moi personnellement, Je n’y connais rien donc Je ne peux pas argumenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *