Quelle est la vraie différence entre “apt-get” et “aptitude”? (Que diriez-vous de "wajig"?)

256

Je sais que les deux apt-getet aptitudesont des interfaces de gestion des paquets de ligne de commande sur Debian Linux dérivées, avec des options différentes, mais je suis encore un peu confus. Sous le capot, n'utilisent-ils pas le même système APT?

Pourquoi Debian maintient-il ces outils parallèles? (Question bonus: qu'est - ce est wajig ?)

Kevin Cantu
la source
Je sais que ce n'est pas le bon répondeur pour votre question, mais pourquoi ne pouvez-vous pas essayer Synaptic? son utilisateur très sympathique et télécharge et installe automatiquement les dépendances. Est-ce que gnome n'est pas présent sur votre système?
Hemant
Je suis partial, mais je pense que cette question sur le site Ubuntu SE pourrait être pertinente.
David Z
@Wim en raison de la partie wajig de cette question, j'ai décidé de fusionner 244 dans cette question au lieu de l'inverse
xenoterracide
1
Il est intéressant de noter qu'aptitude est supposé être supprimé de l'installation par défaut de la prochaine version d'Ubuntu (bien que vous puissiez toujours l'installer à l'aide d'apt-get par la suite)
Rob Cowell

Réponses:

223

La différence la plus évidente est que aptitudefournit une interface de menu terminal (un peu comme Synaptic dans un terminal), alors que ce apt-getn’est pas le cas.

En considérant uniquement les interfaces de ligne de commande de chacune d'elles, elles sont assez similaires et, pour la plupart, peu importe celle que vous utilisez. Les versions récentes des deux suivront quels paquets ont été installés manuellement et lesquels ont été installés en tant que dépendances (et donc éligibles pour une suppression automatique). En fait, je pense que même plus récemment, les deux outils ont été mis à jour pour partager la même base de données de paquets installés manuellement ou automatiquement. le passé.

Il y a quelques différences mineures:

  • aptitude supprimera automatiquement les paquets éligibles, tandis qu'apt-get requiert une commande séparée pour le faire.
  • Les commandes de mise à niveau par rapport à dist-upgrade ont été renommées en aptitude en noms probablement plus précis, safe-upgrade et full-upgrade , respectivement.
  • En réalité, aptitude remplit les fonctions d'apt-get, mais également de certains de ses outils compagnons, tels qu'apt-cache et apt-mark.
  • aptitude a une syntaxe de requête légèrement différente pour la recherche (par rapport à apt-cache)
  • aptitude a les commandes pourquoi et pourquoi-not pour vous indiquer quels paquets installés manuellement empêchent une action que vous pourriez entreprendre.
  • Si les actions (installation, suppression, mise à jour de packages) que vous souhaitez entreprendre peuvent provoquer des conflits, aptitude peut suggérer plusieurs solutions potentielles. apt-get dira simplement "je suis désolé Dave, je ne peux pas te permettre de le faire."

Il y a d'autres petites différences, mais ce sont les plus importantes auxquelles je puisse penser.

En bref, aptitude appartient plus correctement à la catégorie avec Synaptic et d’autres interfaces de gestion de paquets de niveau supérieur. Il se trouve que notre interface de ligne de commande ressemble à apt-get.

Bonus Round: Qu'est-ce que Wajig?

Rappelez-vous comment j'ai mentionné ces outils "compagnons" comme apt-cache et apt-mark? Eh bien, il y en a beaucoup, et si vous les utilisez beaucoup, vous ne vous souviendrez peut-être pas quelles commandes fournissent quelles commandes. Wajig est une solution à ce problème. Il s’agit essentiellement d’un répartiteur, d’une enveloppe autour de tous ces outils. Il applique également sudo lorsque cela est nécessaire. Quand vous dites wajig install foo, Wajig dit "Ok, installest fourni par apt-getet requiert des privilèges d'administrateur", et tout fonctionne sudo apt-get install foo. Quand vous dites wajig search foo, wajig dit "Ok, searchest fourni par apt-cacheet ne nécessite pas de privilèges d'administrateur", et il s'exécute apt-cache search foo. Si vous utilisez wajig au lieu d'apt-get, d'apt-mark, d'apt-cache et d'autres, vous n'aurez jamais ce problème:

$ apt-get search foo
E: Invalid operation search

Si vous voulez savoir ce que wajig est en train de faire dans les coulisses, les outils qu'il utilise pour mettre en œuvre une commande particulière, il a --simulateet --teachingmodes.

Deux commandes wajig que j’utilise souvent sont wajig listfiles fooet wajig whichpkg /usr/bin/foo.

Ryan Thompson
la source
Un gros problème que j'ai avec aptitude est qu’il faut beaucoup de temps pour terminer les onglets sur les noms de paquets (par exemple, aptitude install linux-imtab), alors que c’est très rapide pour apt-get. Il semble y avoir un peu de cache présent dans la famille apt-get qui manque d'aptitude.
levesque
12
aptitudeont également l’impressionnant aptitude searchque vous pouvez utiliser avec des modèles de recherche très puissants . Vous avez aptitude reinstall. Vous pouvez également utiliser l'interface ncurses (menu du terminal) pour préparer des opérations de paquetage complexes, telles que la mise à niveau partielle, la suppression d'un paquetage, le gel d'un autre paquetier, la mise à niveau de celui-ci, que vous pouvez ensuite exécuter en une seule opération . résolveur de conflit interactif .
Totor
3
@Totor sainte vache, utilisant l'interface ncurses d'aptitude pour préparer les commandes qui viennent de me vendre une bonne fois pour toutes! (après des années de réflexion, l'aptitude vaut la peine d'être faite, mais taper apt-get de la mémoire musculaire)
TJ Ellis
2
... et aptitudedoit également aptitude download package-namerécupérer le fichier .deb du paquet!
Totor
2
C'est juste une chose que j'ai trouvée qui n'est pas dedans aptitudemais est dedans apt-get, et c'est apt-get --compile source package-name. apt-get build-dep package-nameexiste mais je pense que aptitude build-dep package-namefaire un meilleur travail.
Anders
71

Je me suis souvent demandé. Wikipedia souligne que la caractéristique principale est qu'aptitude possède une interface plein écran en mode texte (curses). Le fait que vous puissiez utiliser la plupart des apt-getarguments de commande avec aptitudelui-même est simplement une décision de conception visant à faciliter le apt-getdéplacement des utilisateurs vers aptitudeet vice-versa.

Je ne l'ai jamais utilisé wajig, mais la documentation suggère qu'il ne s'agit que d'un script qui sait si vous lui transmettez un debfichier (lorsqu'il s'exécute dpkg) ou un aptnom de package (lorsqu'il s'exécute à la apt-getplace). Pourriez-vous l'essayer et voir si c'est ce qu'il fait?

Bien sûr, la vraie différence est la suivante:

gaurav@fern:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.
Gaurav
la source
52
Non! aptitudea plus. Vous avez oublié de mettre les -vdrapeaux sans fin à moo. (Vous pouvez aller jusqu'à -vvvvvv)
Umang
12
N'oubliez pas les super importantes puissances de la vache, qui apt-getont mais aptitudene l'ont pas. (Essayez --helples deux)
derobert
lmao. C'est une réponse amusante à lire, même si la réponse de @ ryan est beaucoup plus élaborée;)
Michael Trouw
26

aptitude est le programme préféré pour la gestion des paquets à partir de la console, à la fois pour les installations de paquets et les mises à jour de paquets ou de systèmes dans Debian.

Voici un aperçu de l'outil et des fonctionnalités dont il dispose sur apt-get: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

Donc, mon conseil est de simplement apt-get install apt apt :)

dsp
la source
2
Les notes de publication indiquent qu'apt-get est maintenant recommandé plutôt que d'aptitude pour les mises à niveau vers squeeze.
jrdioko
1
Oui, mais seulement pour ça. Sinon, ils sont considérés comme égaux, mais aptitudeont beaucoup plus de fonctionnalités avancées, comme la recherche et le mode plein écran, que apt-get.
Anders
Pour une raison quelconque, utilisé aptitude à installer emacs et sans le regarder, supprimez gdm! Donc pour le moment, on utilisera apt-get mais je suis très curieux d’aptitude.
TomFirth
20

aptitudese souvient quels paquets ont été explicitement demandés et lesquels n'ont été installés qu'en raison de dépendances. Il désinstallera automatiquement les packages qui n'étaient pas explicitement demandés lorsqu'ils ne sont plus nécessaires.

apt-get traite explicitement les paquets demandés et leurs dépendances.

Donc, mieux utiliser aptitude, cela aide à garder votre système propre.

bleu étoile
la source
4
Auparavant, cela était vrai, mais je sais que mon apt-get a une apt-get autoremovecommande pour supprimer les paquets installés uniquement en tant que dépendances. Je ne sais pas quand cette fonctionnalité a été ajoutée, mais un site Web suggère que cela aurait pu arriver à Debian Lenny (juin 2010).
Gaurav
8
apt-get autoremovene supprime pas les packages installés uniquement en tant que dépendances, il supprime les dépendances orphelines, ce qui constitue une différence subtile; il ne peut pas dire si un paquet 'feuille' a été installé avec intention ou comme dépendance, donc il le laisse, où aptitude le saurait et le supprime.
pjz
Je suis vendu! Il y a d'autres aspects intéressants à propos de, aptitudemais il s'agit clairement d'une fonctionnalité révolutionnaire.
iconoclaste
12

apt-get, ainsi que les divers outils associés, utilisent beaucoup moins de mémoire que les appels respectifs en ligne de commande aptitudeet sont un peu plus rapides. J'étais inconsciemment inconscient de cela jusqu'à ce que j'essaye de mettre à niveau l'installation Debian sur un vieux thinkpad pentium assoupi avec 32 Mo de RAM. Cela prendrait une heure ou deux d’échanges de swap pour apt-getaboutir, qui s’est déroulée avec succès; aptitudeéchouerait après je pense une plus longue période de temps.

Cette distinction est plus ou moins sans importance pour tout ce qui ressemble à un système de bureau moderne.

intuitif
la source
9

S'appuyant sur la réponse de @ Gaurav, les œufs de Pâques dans les deux gestionnaires de paquets sont assez amusants !:

siddhartha@siddhartha-dev:~$ apt-get  moo
             (__) 
             (oo) 
       /------\/ 
      / |    ||   
     *  /\---/\ 
        ~~   ~~   
..."Have you mooed today?"...

siddhartha@siddhartha-dev:~$ aptitude  moo
There are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -v moo
There really are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
siddhartha@siddhartha-dev:~$ aptitude -vvv moo
Stop it!
siddhartha@siddhartha-dev:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
siddhartha@siddhartha-dev:~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
siddhartha@siddhartha-dev:~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
siddhartha@siddhartha-dev:~$ aptitude -vvvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
siddhartha@siddhartha-dev:~$ aptitude -vvvvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.

etc.

Siddhartha
la source
7

Comme mentionné , http://pthree.org/2007/08/12/aptitude-vs-apt-get/ , aptitudea une interface de ligne de commande beaucoup plus facile à utiliser.

Sous le capot, n'utilisent-ils pas le même système APT? Oui.

Le système sous-jacent n'est pas juste apt, mais dpkg. Ce système est aussi bête que RPM, il ne peut gérer que l’installation et l’administration de paquets uniques. Il suit quels fichiers installés appartiennent à quel paquet.

aptgère les téléchargements de référentiels, le suivi des dépendances, etc. pour tous les packages individuels - qu'il installe ensuite à l'aide de dpkg. aptitudefait la même chose, avec une interface différente.

vdboor
la source
6

Apt-get et aptitude reposent tous deux sur la bibliothèque APT, oui.

Voir ma réponse sur serverfault.com .

Debian n'est pas une entité monolithique, certaines personnes ont des opinions divergentes et le responsable des aptitudes a décidé qu'apt-get avait quelques défauts et souhaitait construire quelque chose de mieux avec aptitude. Il a amélioré la logique de trouver des solutions pour les scénarios de mise à jour complexes, a ajouté une interface graphique pour la console, etc. Et il y a plus que apt-get et aptitude, voir mon article apt-get, aptitude, ... choisir le gestionnaire de paquets pour vous .

Raphaël Hertzog
la source
6

Je ne sais pas si cela tient toujours, mais Joey Hess, développeur Debian pour Debian, a toujours eu l'habitude de préconiser aptitude plutôt qu'apt-get. Bien sûr, les choses doivent changer à mesure que le logiciel évolue. Apt-get gère désormais les dépendances mieux qu’avant. De http://lists.debian.org/debian-user/2004/04/msg03138.html

Date: mar 20 avr 2004 22:27:12 -0400 De: Joey Hess

Neuf raisons pour lesquelles vous devriez utiliser aptitude au lieu d’apt-get ou de dselect.

  1. aptitude peut ressembler à apt-get

    Si vous exécutez 'aptitude update' ou 'aptitude upgrade' ou 'aptitude install', cela ressemblera et fonctionnera comme avec apt-get, avec quelques améliorations. Donc, il n'y a pas de courbe d'apprentissage.

    (Si vous êtes un utilisateur de dselect, l’apprentissage de la courbe n’est évidemment pas un de vos problèmes.)

  2. aptitude suit automatiquement les paquets installés

    Ne craignez plus d'élaguer les bibliothèques inutilisées et les packages de support de votre système. Si vous utilisez aptitude pour tout installer, il gardera une trace des paquets extraits uniquement par les dépendances et supprimera ces paquets quand ils ne sont plus nécessaires.

  3. aptitude sanely gère recommande

    Un échec de longue date d'apt-get est son manque de soutien pour la relation de recommandation. Ce qui pose problème car de nombreux paquets dans Debian s’appuient sur Recommande pour intégrer les logiciels que l’utilisateur moyen utilise généralement avec ce paquet. Ceci est une cause fréquente de problèmes, même si apt-get a récemment été capable de mentionner au moins les paquets recommandés, il est facile de rater ses avertissements.

    Aptitude prend en charge Recommends par défaut et peut également être configuré pour prendre en charge Suggests. Il prend même en charge l'installation des packages recommandés lorsqu'il est utilisé en mode ligne de commande.

  4. utilisez aptitude en tant qu'utilisateur normal et évitez d'arroser votre système

    Peut-être que vous ne saviez pas que vous pouvez exécuter aptitude en mode gui en tant qu'utilisateur régulier. Apportez les modifications que vous souhaitez essayer. Si vous tombez dans le pétrin, vous pouvez appuyer sur 'q' et quitter, vos modifications ne seront pas enregistrées. (Aptitude vous permet également d’utiliser ctrl-u pour annuler les modifications.) Puisqu'il fonctionne en tant qu'utilisateur normal, vous ne pouvez pas exécuter le test sur votre système tant que vous n'avez pas indiqué à aptitude de faire quelque chose. À ce stade, il vous demandera votre mot de passe root.

  5. aptitude dispose d'une interface utilisateur puissante et de capacités de recherche

    Entre le navigateur catégorique d’aptitude et son excellent support pour le filtrage selon le style mutt et la recherche de paquets par nom, description, mainteneur, dépendances, etc., vous devriez pouvoir trouver des paquets plus rapidement que jamais avant d’utiliser aptitude.

  6. aptitude facilite le suivi des logiciels obsolètes

    Si Debian cesse de distribuer un paquet, apt le laissera indéfiniment sur votre système, sans avertissements ni mises à niveau. Aptitude répertorie de tels packages dans sa section "Packages obsolètes et créés localement", afin que vous puissiez être informé du problème et y remédier.

  7. aptitude a une interface avec le système de tâches Debian

    Aptitude vous permet d'utiliser le système de tâches de Debian tel qu'il a été conçu pour être utilisé. Vous pouvez parcourir les tâches disponibles, sélectionner une tâche à installer, puis y plonger et désélectionner des parties de la tâche que vous ne souhaitez pas. apt-get ne prend pas en charge les tâches et aptitude est même meilleur que des outils spécifiques tels que tasksel.

  8. aptitude prend en charge plusieurs sources

    Si votre fichier sources.list est configuré pour rendre plusieurs versions d’un paquet disponible, aptitude vous permet d’avancer pour voir les versions disponibles et choisir une version autre que celle par défaut à installer. Si un paquet tombe en mode instable, remettez-le simplement à la version en cours de test.

  9. aptitude enregistre ses actions

    Le paquet de journaux d'Aptitude est installé, mis à niveau et supprimé dans / varlog / aptitude, ce qui peut être utile pour comprendre pourquoi les choses ont commencé à se rompre après la mise à niveau d'hier ou lorsque vous avez supprimé un paquet partiticlar.

- vois timide jo

================== il y a aussi une discussion plus récente de 2010 ici https://superuser.com/questions/93437/aptitude-vs-apt-get-which- est-le-recommandé-aka-le-bon-outil-à-utiliser sur StackExchange.

Manselton
la source