web-dev-qa-db-fra.com

Pourquoi la séparation de mise à jour et mise à niveau existe même?

Je comprends que dans apt, la commande update met à jour la liste des packages disponibles, mais elle ne met pas à jour les logiciels déjà installés à partir de ces packages.

Je comprends également que upgrade met à niveau tous les logiciels que j'ai déjà installés à partir d'un paquet que j'ai mis à jour avec update comme décrit ci-dessus.

Quelle était la raison pour laquelle les développeurs Ubuntu/Debian ont procédé à cette division de update et de upgrade à la place avec une seule commande pour effectuer les deux tâches?

C'est plus une question sur la philosophie architecturale des développeurs Ubuntu.

12
user9303970

Une mise à niveau n'est pas la seule fois où vous devrez peut-être apt-get update, et je ne souhaite pas effectuer de mise à niveau à chaque fois que je veux simplement mettre à jour les listes de paquets.

Un apt-get upgrade fonctionnant bien peut dépendre de apt-get update exécuté récemment, mais c’est le cas de apt-get remove et de apt-get install! Est-ce que tout cela devrait impliquer apt-get update? Bien sûr que non! En termes d'efficacité des ressources et de propreté de la conception, si une opération est commune à plusieurs autres opérations, elle doit être factorisée.

Inversement, étant donné que apt-get remove et apt-get install peuvent également dépendre du fait que apt-get update a été exécuté récemment pour réussir, est-il judicieux de apt-get upgrade pour chaque exécution de apt-get update ? Non, encore une fois, car ce que je compte faire pourrait bien entrer en conflit avec ce que apt-get upgrade fera.

7
muru

Chaque fois que vous modifiez les sources de logiciels, vous devez exécuter la commande Sudo apt update afin d'actualiser la liste des logiciels disponibles. Ensuite, vous pouvez rechercher les packages disponibles dans la nouvelle source logicielle que vous venez d'ajouter et/ou les installer.

La commande Sudo apt upgrade est l'équivalent terminal de la mise à niveau de la liste des packages installés à l'aide de l'application Software Updater. Cela diffère du flux de travail normal consistant à ajouter une nouvelle source de logiciel, à mettre à jour la liste des logiciels disponibles afin d'inclure les packages de la nouvelle source de logiciel et à installer de nouveaux packages à partir de la nouvelle source de logiciel que vous venez d'ajouter, pour que ce soit plus pratique. et moins déroutant que Sudo apt update et Sudo apt upgrade soient des commandes séparées.

Il est également moins déroutant de séparer Sudo apt update et Sudo apt upgrade, car lorsque vous exécutez Sudo apt update, vous avez confirmé que vous disposiez d'une connectivité Internet. S'il y a un problème lors de l'exécution ultérieure de Sudo apt upgrade, il s'agit davantage d'un problème de gestion de paquets que d'un problème de connectivité Internet, et les résultats de Sudo apt upgrade fourniront des indices permettant de diagnostiquer et de résoudre le problème. .

6
karel

L’histoire de la différence entre update et upgrade est en fait plutôt cool.

Il y a bien longtemps - environ 2000, des années avant Ubuntu -, la bande passante et l'espace disque étaient beaucoup plus limités ... bien que plus onéreux qu'au milieu des années 1990. Le haut débit commençait tout juste, et la connexion était toujours un moyen vital de se connecter. Les gros disques ne représentaient encore que quelques centaines de Mo. Apt était brillant et nouveau, radical et révolutionnaire, construit sur dpkg.

La base de données apt, quand vous y réfléchissez, est une merveille: c’est une base de données précise à la minute de tous les logiciels de tous les dépôts connus. Il est suffisamment détaillé pour permettre de calculer les dépendances et d'identifier les mises à niveau disponibles, tout en étant suffisamment petit pour être transmis via les modems d'accès à distance de l'heure et stocké sur les petits lecteurs de l'époque. La mise à jour de votre base de données par téléphone peut prendre minutes avec une bonne connexion. Bien que ce soit long maintenant, rechercher manuellement les mises à jour des paquets (avant apt) peut prendre heures .

À l'époque, les distributions étaient construites différemment: pas d'intégration continue, pas de test de fumée (enfin, pas beaucoup de tests du tout!), Les fermes de construction commençaient tout juste. Les mises à niveau ont dû être annulées plus souvent que maintenant. De nombreux utilisateurs ont choisi de ne pas mettre à jour certains paquets pour diverses raisons, ou de ne sélectionner que certaines mises à jour aujourd'hui (à tester manuellement) et d'autres mises à jour demain.

Au cours des quelque 15 années suivantes, les outils n'ont pas beaucoup changé. C'est pourquoi nous avons toujours des variables update et upgrade actions. Le flux de travail utilisateur a évolué au fur et à mesure de l'amélioration de la fiabilité de la distribution, et une grande partie de la gestion source/mise à niveau/mise à niveau qui était auparavant manuelle a été lentement cachée derrière des couches d'automatisation (software-updater, unattended-upgrades).

La modernisation des outils de package logiciel est une des raisons pour lesquelles Snaps, AppImage et Flatpack ont ​​récemment fait leur apparition, mais c'est le chapitre suivant.

5
user535733

Ils font des choses séparées pour plusieurs raisons.

Un exemple est une question que j'ai postée et à laquelle j'ai répondu moi-même: Comment supprimer des PPA à l'aide d'une interface graphique? . Sur cet écran, nous voulons supprimer les PPA et ne pas mettre à niveau le logiciel:

Remove PPA.png

Après la suppression d'un PPA, le logiciel d'interface graphique exécute automatiquement Sudo apt update. Si vous souhaitez supprimer un PPA de la ligne de commande, vous devez exécuter Sudo apt update après supprimer un PPA de la liste des sources.

Sans une fonction apt update séparée, il n'y a aucun moyen de supprimer un PPA !.


Un autre exemple est que vous devez exécuter Sudo apt update à partir de la ligne de commande pour actualiser les sources. Ensuite, vous pouvez découvrir ce que pourrait mettre à niveau sans réellement mettre à niveau:

$ apt list --upgradable
Listing... Done
conky-std/xenial 1.10.1-3 AMD64 [upgradable from: 1.9.0-4]
google-chrome-stable/stable 65.0.3325.181-1 AMD64 [upgradable from: 63.0.3239.132-1]
libxnvctrl0/xenial 390.48-0ubuntu0~gpu16.04.1 AMD64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1]
nvidia-settings/xenial 390.48-0ubuntu0~gpu16.04.1 AMD64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1]
peek/xenial 1.3.1-0~ppa23~ubuntu16.04.1 AMD64 [upgradable from: 1.2.1-0~ppa20~ubuntu16.04.1]

En regardant la sortie, vous pourriez décider de faire en sorte qu'un paquet donné soit "épinglé" ou "retenu" et ne pas être mis à niveau la prochaine fois que "Sudo apt upgrade" sera exécuté. S'il y avait un seul processus de "mise à jour/mise à niveau", vous perdriez cette capacité. .

Sans un apt update séparé, vous ne pouvez pas voir ce qui serait mis à jour!

2
WinEunuuchs2Unix

Dans aucune distribution, il n'y a qu'une seule commande update-upgrade, si elle existe, ce n'est rien d'autre que des alias prédéfinis autant que je le suppose. Ces alias peuvent également être facilement définis sur Ubuntu en éditant le fichier ~/.bashrc.

La mise à jour est utilisée pour resyncroniser les référentiels et résoudre les problèmes éventuels. Ensuite, lors de la mise à niveau, vous mettez à niveau vos packages installés. Mais lorsque vous mettez à niveau Dist, vous effectuez une mise à niveau complète. Dans Arch Linux, ils mettent l’accent sur la mise à niveau complète avec Syu. Vous pouvez faire la même chose dans Ubuntu. Lors de la mise à niveau complète, vous résolvez en réalité tout problème de dépendance lié à une mise à niveau partielle.

J'espère que ça aide. Veuillez excuser le texte brut car vous écrivez au téléphone.

0

On pourrait demander pourquoi télécharger le programme à partir du référentiel formel Ubuntu avec apt puis l’installer? Quelle différence cela ferait-il si vous le téléchargiez d'abord et que vous l'installiez ensuite plutôt que de télécharger et d'installer en une seule opération?

Après avoir lu les commentaires et réfléchi davantage, j'ai compris que cela est dû à la philosophie philosophie Unix , une philosophie modulaire qui dit en gros "Chaque programme fait une chose": téléchargez, puis installez --- chaque action avec son propre programme dédié.

0
user9303970