web-dev-qa-db-fra.com

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

Je sais que les deux apt-get et aptitude sont des interfaces de gestion de paquets en ligne de commande sur Linux dérivé de Debian, avec différentes options, mais je suis toujours quelque 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 que c'est wajig ?)

259
Kevin Cantu

La différence la plus évidente est que aptitude fournit une interface de menu de terminal (un peu comme Synaptic dans un terminal), tandis que apt-get ne fait pas.

En considérant uniquement les interfaces de ligne de commande de chacune, elles sont assez similaires, et pour la plupart, peu importe celle que vous utilisez. Les versions récentes des deux suivront quels packages ont été installés manuellement et lesquels ont été installés en tant que dépendances (et donc éligibles pour la 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 packages installés manuellement vs automatiquement, donc les cas où vous installez quelque chose avec apt-get puis aptitude veut le désinstaller sont principalement une question de le passé.

Il existe quelques différences mineures:

  • aptitude supprimera automatiquement les packages éligibles, alors qu'apt-get nécessite une commande distincte pour ce faire
  • Les commandes pour pgrade vs dist-upgrade ont été renommées en aptitude aux noms probablement les plus précis safe-upgrade et full -upgrade, respectivement.
  • aptitude remplit en fait les fonctions non seulement d'apt-get, mais aussi de certains de ses outils compagnons, tels que 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 pas pour vous dire quels packages installés manuellement empêchent une action que vous pourriez vouloir entreprendre.
  • Si les actions (installation, suppression, mise à jour des packages) que vous souhaitez entreprendre provoquent des conflits, aptitude peut suggérer plusieurs résolutions potentielles. apt-get dira simplement "Je suis désolé Dave, je ne peux pas vous permettre de faire ça."

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

En bref, aptitude appartient plus correctement à la catégorie avec Synaptic et d'autres interfaces de gestionnaire de paquets de niveau supérieur. Il se trouve simplement qu'il a également une interface de ligne de commande qui ressemble à apt-get.

Bonus Round: Qu'est-ce que le 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 lesquels 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 si nécessaire. Quand tu dis wajig install foo, wajig dit "Ok, install est fourni par apt-get et nécessite des privilèges d'administrateur ", et il exécute Sudo apt-get install foo. Quand tu dis wajig search foo, wajig dit "Ok, search est fourni par apt-cache et ne nécessite pas de privilèges d'administrateur ", et il exécute apt-cache search foo. Si vous utilisez wajig au lieu de apt-get, apt-mark, apt-cache et autres, vous n'aurez jamais ce problème:

$ apt-get search foo
E: Invalid operation search

Si vous voulez savoir ce que wajig fait en coulisses, quels outils il utilise pour implémenter une commande particulière, il a --simulate et --teaching modes.

Deux commandes wajig que j'utilise souvent sont wajig listfiles foo et wajig whichpkg /usr/bin/foo.

225
Ryan C. Thompson

Je me suis souvent demandé. Wikipedia met en évidence que la principale caractéristique distinctive est que aptitude a une interface en mode texte plein écran (curses). Le fait que vous puissiez utiliser la plupart des apt-get Les arguments de commande avec aptitude lui-même ne sont qu'une décision de conception pour faciliter apt-get utilisateurs pour passer à aptitude et vice-versa.

Je n'ai jamais utilisé wajig, mais la documentation suggère que c'est juste un script qui sait si vous lui passez un fichier deb (quand il s'exécute dpkg) ou un apt nom du package (lors de son exécution apt-get au lieu). Pourriez-vous l'essayer et voir si c'est ce qu'il fait?

Bien sûr, la différence réelle est:

gaurav@fern:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.
71
Gaurav

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 à niveau de paquets ou de systèmes dans Debian.

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

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

26
dsp

aptitude se souvient des packages qui ont été explicitement demandés et qui 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 les packages demandés explicitement et leurs dépendances de la même manière.

Il vaut donc mieux utiliser aptitude, cela aide à garder votre système propre.

20
starblue

apt-get, ainsi que les divers outils complémentaires, utilisent beaucoup moins de mémoire que les appels de ligne de commande respectifs de aptitude et sont un peu plus rapides. J'étais parfaitement inconscient de cela jusqu'à ce que j'essaie de mettre à niveau l'installation de Debian sur un vieux Thinkpad pentium avec 32 Mo de RAM. Il faudrait une heure ou deux de swash-thrash pour exécuter apt-get, qui s'est terminé avec succès; aptitude échouerait après une longue période de réflexion.

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

12
intuited

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

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.

9
Siddhartha

Ils offrent la même fonctionnalité de base: installer et supprimer des packages de la ligne de commande.

Voici une comparaison plus détaillée, publiée sur le site Web Ubuntu Stack Exchange : https://askubuntu.com/questions/1743/is-aptitude-really- meilleur-que-apt-get/1749 # 1749

8
Riccardo Murri

Comme mentionné, http://pthree.org/2007/08/12/aptitude-vs-apt-get/ , aptitude a 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 seulement apt, mais dpkg. Ce système est tout aussi stupide que RPM, il ne peut gérer que l'installation et l'administration de packages uniques. Il suit quels fichiers installés appartiennent à quel package.

apt gè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. aptitude fait de même, avec une interface différente.

7
vdboor

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

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

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

  1. aptitude peut ressembler à apt-get

    Si vous exécutez "aptitude update" ou "aptitude upgrade" ou "aptitude install", cela ressemble et fonctionne exactement comme apt-get, avec quelques améliorations. Il n'y a donc pas de courbe d'apprentissage.

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

  2. aptitude suit les packages installés automatiquement

    Arrêtez de vous soucier de l'élagage des bibliothèques inutilisées et des packages de support de votre système. Si vous utilisez aptitude pour tout installer, il gardera une trace des packages extraits uniquement par les dépendances et supprimera ces packages lorsqu'ils ne sont plus nécessaires.

  3. aptitude gère sainement recommande

    Un échec de longue date d'apt-get a été son manque de soutien à la relation Recommends. Ce qui est un problème car de nombreux paquets dans Debian s'appuient sur Recommends pour récupérer les logiciels que l'utilisateur moyen utilise généralement avec le paquet. Il s'agit d'une cause de problème non rare, même si apt-get est récemment devenu capable de mentionner au moins les packages recommandés, il est facile de manquer ses avertissements.

    Aptitude prend en charge les recommandations par défaut et peut également être configuré pour prendre en charge les suggestions. 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 entrez dans un vrai bordel, 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.) Comme il fonctionne en tant qu'utilisateur normal, vous ne pouvez pas gérer votre système tant que vous ne dites pas à aptitude de faire quelque chose, auquel cas il vous demandera votre mot de passe root.

  5. aptitude possède une interface utilisateur puissante et des capacités de recherche

    Entre le navigateur catégorique d'aptitude et sa grande prise en charge du filtrage de style mutt et de la recherche de packages par nom, description, responsable, dépendances, etc., vous devriez pouvoir trouver des packages plus rapidement que jamais auparavant en utilisant aptitude.

  6. aptitude facilite le suivi des logiciels obsolètes

    Si Debian arrête de distribuer un paquet, apt le laissera indéfiniment sur votre système, sans avertissement ni mise à niveau. Aptitude répertorie ces packages dans sa section "Packages obsolètes et créés localement", afin que vous puissiez être informé du problème et faire quelque chose.

  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 creuser et désélectionner les 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 meilleure que les outils à usage spécial comme tasksel.

  8. aptitude prend en charge plusieurs sources

    Si votre sources.list est configuré pour rendre plusieurs versions d'un package disponibles, aptitude vous permet de rechercher les versions disponibles et de choisir une version non par défaut à installer. Si un package se casse en instable, restaurez-le simplement dans la version dans testing.

  9. aptitude enregistre ses actions

    Aptitude enregistre le package qu'il installe, met à niveau et supprime dans/varlog/aptitude, ce qui peut être utile pour comprendre pourquoi les choses ont commencé à se briser après la mise à niveau d'hier ou lorsque vous avez supprimé un package partiticlar.

- voir timide jo

=================== il y a aussi une discussion plus récente de 2010 ici https://superuser.com/questions/93437/aptitude-vs-apt- get-which-is-the-recommended-aka-the-right-tool-to-use sur StackExchange.

6
manselton

Apt-get et aptitude s'appuient sur la bibliothèque APT, oui.

Voir mon réponse sur serverfault.com .

Debian n'est pas une entité monolithique, il y a des gens avec des opinions différentes et le responsable des aptitudes a décidé qu'apt-get avait quelques défauts et voulait construire quelque chose de mieux avec aptitude. Il a amélioré la logique pour trouver des solutions pour des scénarios de mise à niveau complexes, ajouté une interface graphique pour la console, etc. Et il y a plus que juste apt-get et aptitude, voir mon article apt-get, aptitude,… choisissez le bon package gestionnaire pour vous .

6
Raphaël Hertzog