Je comprends que dans apt
, la commande update
met à jour la liste des packages disponibles, mais elle ne met pas à niveau le logiciel déjà installé à partir de ces packages.
Je comprends également que la upgrade
mise à niveau de tout logiciel que j'ai déjà installé à partir d'un package que j'ai mis à jour update
comme décrit ci-dessus.
Quelle était la raison pour laquelle les développeurs Ubuntu / Debian ont effectué ce fractionnement update
et ont upgrade
plutôt travaillé avec une seule commande pour effectuer les deux tâches?
Il s'agit plus d'une question sur la philosophie architecturale des développeurs Ubuntu.
alias
. La méthode Unix est une commande qui ne fait qu'une chose de toute façon, donc la séparation correspond mieux à la méthode Unix si les arguments «théologiques / philosophiques» sont aussi votre truc.apt dist-upgrade
et appuyez sur "n" pour annuler, puis changez d'avis, je vais économiser la bande passante car il ne sera pas "mis à jour" afin de refaire maapt dist-upgrade
commande ... Même si "dist-upgrade" a fait la mise à jour automatiquement, il y a des raisons de 'mettre à jour' qui n'incluent pas 'install', 'upgrade' ou 'dist-upgrade' donc la commande 'update' existerait de toute façon ..apt update
devrait simplement s'exécuter automatiquement en cas de besoin.Réponses:
Une mise à niveau n'est pas la seule fois dont vous pourriez avoir besoin
apt-get update
, et je ne veux pas mettre à niveau chaque fois que je veux simplement mettre à jour les listes de packages.Un
apt-get upgrade
fonctionne bien peut dépendre enapt-get update
cours d' exécution n'y a pas longtemps, mais cela est vrai deapt-get remove
etapt-get install
aussi bien! Est-ce que tout cela devrait impliquerapt-get update
? Bien sûr que non! Par simple souci d'efficacité des ressources et de propreté de la conception, si une opération est commune à plusieurs autres opérations, elle doit être éliminée.A l' inverse, étant donné que ,
apt-get remove
etapt-get install
peut également dépendre d'apt-get update
être exécutés récemment avec succès à la fin, est - il logique deapt-get upgrade
chaque série deapt-get update
? Non, encore une fois, car ce que j'ai l'intention de faire pourrait bien entrer en conflit avec ce quiapt-get upgrade
va le faire.la source
Chaque fois que vous modifiez les sources logicielles, vous devez exécuter la commande
sudo apt update
pour 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. Ceci est différent du flux de travail normal consistant à ajouter une nouvelle source logicielle, à mettre à jour la liste des logiciels disponibles pour inclure les packages de la nouvelle source logicielle et à installer les nouveaux packages à partir de la nouvelle source logicielle que vous venez d'ajouter, donc c'est plus pratique et moins déroutant quesudo apt update
etsudo apt upgrade
sont des commandes distinctes.Il est également moins déroutant de séparer
sudo apt update
etsudo apt upgrade
parce que lorsque vous exécutezsudo apt update
avec succès, vous avez confirmé que vous disposez d'une connectivité Internet. S'il y a un problème lors de l'exécutionsudo apt upgrade
ultérieure, le problème est plus susceptible d'être un problème de gestion de package qu'un problème de connectivité Internet, et les résultats desudo apt upgrade
fourniront des indices pour diagnostiquer et résoudre le problème.la source
L'histoire de la différence entre
update
etupgrade
est en fait assez cool.Il y a très longtemps - environ 2000 ans environ, des années avant l'existence d'Ubuntu -, la bande passante et l'espace disque étaient beaucoup plus limités ... bien que vastes par rapport au milieu des années 90. Le haut débit ne faisait que commencer et la connexion par ligne commutée était toujours un moyen essentiel de se connecter. Les gros disques ne faisaient encore que quelques centaines de Mo. Apt était brillant et nouveau, radical et révolutionnaire, construit sur le dessus de dpkg.
La base de données apt, quand on y pense, est une merveille: c'est une base de données précise de la minute de tous les logiciels de tous les référentiels connus. Il est suffisamment détaillé pour pouvoir calculer les dépendances et identifier les mises à niveau disponibles, mais suffisamment petit pour transmettre sur les modems d'accès à distance de l'époque et pour stocker sur les petits disques de l'époque. La mise à jour de votre base de données par téléphone peut prendre quelques minutes avec une bonne connexion. Bien que cela soit long maintenant, la recherche manuelle des mises à jour des packages (avant apt) pourrait consommer des 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 ne faisaient que commencer. Les mises à niveau ont dû être annulées plus souvent que maintenant. De nombreux utilisateurs ont choisi de ne pas mettre à niveau certains packages pour diverses raisons, ou de ne sélectionner que certaines mises à niveau aujourd'hui (pour tester manuellement) et d'autres mises à niveau demain.
Au cours des 15 ou si les années suivantes, les outils ont pas beaucoup changé, ce qui est la raison pour laquelle nous avons encore séparé
update
etupgrade
actions. Le flux de travail des utilisateurs a évolué à mesure que la fiabilité des distributions s'est améliorée, et une grande partie de la gestion des sources / mises à jour / mises à niveau qui était autrefois manuelle a été lentement cachée derrière des couches d'automatisation (software-updater
,unattended-upgrades
).La modernisation des outils de progiciel est l'une des raisons pour lesquelles Snaps et AppImage et Flatpack sont récemment apparus, mais c'est le chapitre suivant.
la source
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 les PPA à l'aide de l'interface graphique? . Sur cet écran, nous voulons supprimer les PPA et non mettre à niveau le logiciel:
Après avoir supprimé un PPA, le logiciel GUI s'exécute automatiquement
sudo apt update
. Si vous deviez supprimer un PPA de la ligne de commande, vous devez l'exécutersudo apt update
après avoir supprimé un PPA de la liste des sources.Sans
apt update
fonction 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 qui pourrait être mis à niveau sans réellement mettre à niveau:En regardant la sortie, vous pourriez décider d'avoir un paquet donné "épinglé" ou "retenu" et non mis à niveau la prochaine fois que `sudo apt upgrade" est exécuté. S'il y avait un seul processus "update / upgrade" vous perdriez ces capacités .
Sans un élément séparé,
apt update
vous ne pouvez pas voir ce qui serait amélioré!la source
yum
etdnf
exécuter automatiquement l'équivalent d'une mise à jour lors des opérations pertinentes. Par exemple, l'équivalent deapt list --upgradable
isyum check-update
, qui met à jour la liste des packages si elle n'a pas été mise à jour récemment. Il est certainement possible que cela fonctionne, comme on peut le voir dans d'autres gestionnaires de packages.sudo apt update
après avoir supprimé un référentiel.yum
/dnf
again, l'opération de mise à jour est automatique, donc une source désactivée est automatiquement supprimée de l'opération suivante. Encore une fois, quelque chose qui est tout à fait possible.yum
nidnf
installés. L'installation de l'un d'eux pour remplacer unapt update
augmenterait les frais généraux et le temps d'apprentissage du système.On pourrait se demander pourquoi télécharger le programme à partir du référentiel officiel d'Ubuntu
apt
puis l'installer? Quelle différence cela ferait-il si vous le téléchargez d'abord, puis l'installez plutôt que de le télécharger et de l'installer en une seule opération?Eh bien, après avoir lu les commentaires et réfléchi à ce sujet, je comprends que cela est dû à la philosophie Unix , une philosophie modulaire qui dit essentiellement "Chaque programme fait une chose": téléchargez d'abord, puis installez --- chaque action avec son propre programme dédié .
la source
Dans aucune distribution, il y a une chose mise à jour-mise à niveau de commande, si elle est là, ce ne sont que des alias prédéfinis autant que je suppose. Ces alias peuvent également être facilement définis sur Ubuntu, en modifiant le ~ / .bashrc.
La mise à jour est utilisée pour resynchroniser les référentiels et corriger les problèmes qui s'y trouvent. Ensuite, lorsque vous mettez à niveau, vous mettez à niveau vos packages installés. Mais lorsque vous effectuez une mise à niveau à distance, vous effectuez une mise à niveau complète. Dans Arch linux, ils mettent l'accent sur une mise à niveau complète avec Syu. Vous pouvez faire de même dans Ubuntu. Dans la mise à niveau complète, vous résolvez réellement tout problème de dépendance au niveau du système, qui peut survenir lors d'une mise à niveau partielle.
J'espère que cela aide. Veuillez excuser le texte brut comme écrit sur le téléphone.
la source
yum
etdnf
faire automatiquement l'équivalent d'unupdate
sur la plupart des opérations si les données mises en cache sont assez anciennes. Voir, par exemple, la discussion sur la modification de ce comportement dans dnf: lwn.net/Articles/750334