Pourquoi utiliser apt-get upgrade au lieu d'apt-get dist-upgrade?

302

J'utilise habituellement apt-get update && apt-get upgrademes mises à jour et mes mises à niveau à la place de l'interface graphique, car elle semble fonctionner plus rapidement.

Cependant, j'ai récemment remarqué que je recevais souvent le message que l'une de mes mises à niveau avait été retardée. Ensuite, je cours habituellement dist-upgradepour le parcourir et cela fonctionne bien. Autant que je sache, après avoir lu cette question et ses réponses, dist-upgradefait toujours les mêmes choses et plus encore.

Donc, ma question est: pourquoi utiliser apt-get upgradedu tout? Pourquoi ne pas utiliser apt-get dist-upgradetout le temps? Pourquoi apt-get upgradeexiste même?

jimchristie
la source
1
Dans les nouvelles versions d'Ubuntu, sudo apt full-upgradefait des choses similaires.
Aaron Franke

Réponses:

410

Je mets généralement à niveau mes machines avec:

sudo apt-get update && time sudo apt-get dist-upgrade

Ci-dessous un extrait de man apt-get. L'utilisation de la mise à niveau est conforme à la règle: en aucun cas les packages actuellement installés ne sont supprimés, ni les packages non déjà installés ne sont récupérés et installés. Si c'est important pour vous, utilisez apt-get upgrade. Si vous voulez que les choses "fonctionnent", vous voulez probablement vous apt-get dist-upgradeassurer que les dépendances sont résolues.

Pour expliquer pourquoi vous souhaitez mettre à niveau au lieu de dist-upgrade , si vous êtes administrateur système, vous avez besoin de prévisibilité. Vous utilisez peut-être des fonctionnalités avancées telles que l’ épinglage ou le prélèvement dans une collection de PPA (vous avez peut-être un PPA interne), avec diverses automatisations en place pour inspecter votre système et les mises à niveau disponibles au lieu de toujours mettre à jour avec empressement tous les packages disponibles. Vous pourriez être très frustré lorsque apt exécute un comportement non scripté, en particulier si cela entraîne un temps d'arrêt d'un service de production.

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.
rduplain
la source
44
Merci d'avoir non seulement résumé les différences entre les deux, mais également expliqué les situations dans lesquelles l'une pourrait être meilleure que l'autre. C'était exactement ce que je cherchais.
jimchristie
10
dist-upgradeest plus susceptible de casser des choses mal que upgrade. upgradeassure que votre système reste complet.
Braiam
5
dist-upgrade est plus susceptible de résoudre les problèmes liés aux versions de paquetages contradictoires, si vous êtes à l'aise avec l'approche du rouleau compresseur (vous n'avez donc pas de logiciel de production essentiel pour la production exécutée sur la boîte)
Henno
1
Une petite question à propos de 'apt-get upgrade' se référant au fait qu '"aucun paquet actuellement installé n'est supprimé ou qu'un nouveau ne soit ajouté": les paquets existants sont-ils également mis à jour en conséquence. Par exemple, oldA dépend de oldB. OldA et oldB seront-ils tous deux mis à niveau? Qu'en est-il si newA dépend de oldB et non de newB, qu'advient-il de ces deux lors de la mise à niveau? les deux ne sont pas mis à niveau ou tous les deux mis à niveau, ce qui peut laisser newA ne pas fonctionner car oldB est perdu?
Kenny
2
Quelle est la raison d'utiliser timeici?
ItalyPaleAle
130

Je sais que cette question a été répondue et a un an, mais je pense que cela doit être dit. Ubuntu 14.04 et ultérieur (et Debian Jessie et plus tard, pour ceux qui le trouvent chez Google) utilise APT 1.0, qui autorise la commande à la aptplace de apt-getet apt-cachepour certaines opérations.

  • apt-get upgrade ne changera pas ce qui est installé (seulement les versions),
  • apt-get dist-upgrade installera ou supprimera les packages nécessaires à la mise à niveau,
  • apt upgrade installera automatiquement mais ne supprimera pas les paquets.
  • apt full-upgraderemplit la même fonction que apt-get dist-upgrade.
Stephen Angelico
la source
@muru Merci pour l'édition et la note sur la mise à niveau complète. J'utilise principalement Debian 7 (antérieure à APT 1.0) et je n'ai joué qu'avec Debian Jessie et Ubuntu 14.04.
Stephen Angelico
vous êtes les bienvenus. En tant que personne qui utilise jessieet 14.04 régulièrement, j'ai d'abord entendu parler de ce nouvel utilitaire grâce à votre réponse!
Muru
Avez-vous une source pour votre description de apt upgrade? Tout ce que je peux suggérer suggère que apt upgradec'est la même chose apt-get upgrade. Par exemple, apt help upgradesur les sorties de mon système:"apt upgrade" is equivalent to "sudo apt-get upgrade"
Jon Bentley
1
Les pages de manuel respectives pour aptet apt-getspécifient ce que j’ai dit au départ.
Stephen Angelico
1
apt safe-upgraden'est pas une opération valide sur mon système. Si vous voulez dire aptitude safe-upgrade, pas tout à fait. apt-get upgradene sera jamais installer des paquets, alors apt upgradeet aptitude safe-upgradeinstallera de nouveaux paquets que les dépendances exigent. Donc aptitude safe-upgradeest équivalent à apt upgrade, pas apt-get upgrade.
Stephen Angelico
8

L' upgradeoption installe uniquement la nouvelle version des packages déjà installés sur le système (et oui, les mises à jour du noyau leur appartiennent).

Toutefois, les mises à jour changent parfois de dépendance: par exemple, une nouvelle version d’un package ne dépend plus de la bibliothèque que vous avez installée ou nécessite l’installation de bibliothèques supplémentaires. L' upgradeoption ne supprimera jamais les packages installés dont vous n'avez plus réellement besoin.

Cependant, l' dist-upgradeoption peut gérer "intelligemment" les modifications dans le système de dépendances. Cela inclut la suppression des packages qui ne sont plus nécessaires ou la résolution des conflits entre packages dus aux modifications apportées aux dépendances.

janvier
la source
5
Bien que cela soit exact, je ne pense pas que cela réponde à la question. Si nous avons une option "intelligente" capable de gérer les changements de dépendance et de supprimer l'encombrement, pourquoi ne pas toujours l'utiliser?
ændrük
1
upgraden’ajoutera jamais non plus de nouveaux paquets qui deviennent nécessaires en tant que dépendances. De man apt-get: "en aucun cas les paquets actuellement installés ne sont supprimés, ou les paquets non déjà installés sont récupérés et installés" @ ændrük Ce n'est pas parce que quelque chose est "intelligent" que cela fera toujours ce que l'utilisateur veut (ou même quelque chose de raisonnable) . Chaque fois qu'une mise à jour du système supprime un paquet, il est bon de regarder ce qui se passe avant d'appuyer sur Y.
Eliah Kagan
2

Les utilisateurs peuvent s’en remettre à des packages installés de manière implicite en raison de la dépendance d’autres packages (explicitement installés). Ainsi, le système de conditionnement ne peut pas être conscient du souhait d'un utilisateur / administrateur de conserver certaines fonctionnalités qui pourraient sinon être supprimées via dist-upgrade.

utilisateur244474
la source
-4

Les utilisateurs de Win-Home ne devraient pas avoir toujours du mal à "dist-mettre à niveau", mais si vous utilisez des systèmes complexes, vous feriez mieux de "ne jamais changer (vraiment) un système en cours d'exécution" ... Même s'il n'y a "devrait" pas de problème , il pourrait y avoir des problèmes - ce qui va vous couper! VOUS devriez être celui qui a le droit de décider 2 ;-)

Thorben Kaufmann
la source
3
Should not be a problem for Win-Home Users to always "dist-upgrade"..pourquoi donc ?
Heemayl
1
Eh bien, supposons que vous configuriez un serveur Ubuntu, une station de travail pour un environnement productif: quand vous faites toujours et automatiquement la dist-mise à niveau, vous ne pouvez probablement pas contrôler, quand vous avez des problèmes - même si vous n'avez pas le temps de les résoudre À ce moment-là, une mise à niveau automatisée est effectuée. Certaines configurations peuvent nécessiter un contact "humain" pour mettre en communication. C'est ce que j'ai expérimenté plusieurs fois. Lorsque vous travaillez simplement sur des plateformes "domestiques" telles que Win-Home, l’utilisateur n’est pas autorisé par défaut à contrôler les mises à jour. Donc, vous ne pouvez pas vous déranger.
Thorben Kaufmann