Quelle est la différence entre apt-get et aptitude?

56

Je ne comprends pas pourquoi il y a deux programmes différents dans une installation minimale pour installer un logiciel. Ne font-ils pas la même chose? Y a-t-il une grande différence? J'ai lu partout pour utiliser aptitude sur apt-get mais je ne connais toujours pas la différence

Thomaschaaf
la source

Réponses:

48

aptitude est un wrapper pour dpkg exactement comme apt-get / apt-cache, mais c’est un outil unique pour la recherche / l’installation / la suppression / l’interrogation. Quelques exemples qu’apt pourrait ne pas fournir:

$ aptitude why libc6
i   w64codecs Depends libc6 (>= 2.3.2)
$ aptitude why-not libc6
Unable to find a reason to remove libc6.

$ aptitude show libc6
Package: libc6
State: installed
Automatically installed: no
Version: 2.9-4ubuntu6
Priority: required
Section: libs
Maintainer: Ubuntu Core developers <[email protected]>
Uncompressed Size: 12.1M
Depends: libgcc1, findutils (>= 4.4.0-2ubuntu2)
Suggests: locales, glibc-doc
Conflicts: libterm-readline-gnu-perl (< 1.15-2), 
tzdata (< 2007k-1), tzdata-etch, nscd (< 2.9)
Replaces: belocs-locales-bin
Provides: glibc-2.9-1
Description: GNU C Library: Shared libraries
 Contains the standard libraries that are used by nearly all programs 
 on the system. This package includes shared versions of the standard 
 C library and the standard math library, as well as many others.
Katriel
la source
10
pour ne pas mentionner: $ aptitude changelog bash
pages
D'autres astuces qui aptitudesavent que même les plus récentes aptne peuvent pas le faire: aptitude search '~i linux'rechercher des paquets avec un linuxnom ou une description installés aptitude search '~o'liste les paquets obsolètes (les paquets installés qui ne sont plus fournis par un référentiel); aptitude search '!~M ~i'affiche les paquets qui ne sont pas marqués comme installés automatiquement; aptitude search '~i lib.*-dev'spectacles installés bibliothèques de développement et vous pouvez remplacer searchpar markautoou unmarkautopour marquer ces paquets comme automatiquement ou manuellement installé.
Mikko Rantalainen le
44
mikeage@linode ~$ aptitude -h | tail -n 1
              This aptitude does not have Super Cow Powers.
mikeage@linode ~$ apt-get -h | tail -n 1
                   This APT has Super Cow Powers.
mikeage@linode ~$ aptitude moo
    There are no Easter Eggs in this program.
mikeage@linode ~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...
mikeage@linode ~$ aptitude -v moo
There really are no Easter Eggs in this program.
mikeage@linode ~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
mikeage@linode ~$ aptitude -vvv moo
Stop it!
mikeage@linode ~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
mikeage@linode ~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
mikeage@linode ~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course. 
Mikeage
la source
19

L’outil officiel actuellement utilisé par le programme d’installation Debian et recommandé dans les notes de publication est aptitude.

Aptitude offre une interface curses (lorsqu'elle est exécutée sans aucun paramètre) et une interface de ligne de commande permettant de faire presque tout ce que apt-cache/ apt-getfait. Il possède également un meilleur résolveur de dépendance qui vous permet de naviguer entre plusieurs solutions. Même lorsque vous utilisez la version en ligne de commande, vous pouvez interagir avec la solution proposée et donner des ordres ou des astuces supplémentaires (comme installer ou supprimer un paquet recommandé par un autre).

Mais aptitude est basé sur la bibliothèque libapt (ce n'est pas un wrapper direct de dpkg) et en tant que tel dépend du aptpaquet, vous ne pouvez donc pas installer aptitude sans apt-get (qui se trouve également dans le paquet apt).

$ dpkg --status aptitude| grep Depends
Depends: libapt-pkg-libc6.9-6-4.7, [...]
$ dpkg --status apt|grep Provides
Provides: libapt-pkg-libc6.9-6-4.7
$ dpkg --search /usr/lib/libapt-pkg-libc6.9-6.so.4.7 /usr/bin/apt-get
apt: /usr/lib/libapt-pkg-libc6.9-6.so.4.7
apt: /usr/bin/apt-get

Pour en savoir plus sur la manière dont apt / dpkg / aptitude interagissent, vous pouvez consulter le diagramme réalisé par Daniel Burrows (auteur principal d’aptitude). Un autre diagramme présente les informations stockées par les divers outils de gestion de paquets: Une carte des fichiers d’état apt et dpkg .

Vous pouvez également lire mon article apt-get, aptitude,… choisir le bon gestionnaire de paquets pour vous

Raphaël Hertzog
la source
7

aptitudemémorise les paquets que vous avez délibérément installés et ceux qui ont été installés automatiquement pour satisfaire les dépendances. Lors de la suppression d'un paquet, aptitude supprimera les paquets installés automatiquement pour garder votre système en ordre. apt-getn'est-ce pas intelligent?

aptitudedeviendra rapidement un outil indispensable lorsque vous utiliserez différents référentiels avec différentes versions d’un paquet. Imaginez que vous travaillez avec backports.org ou avec des référentiels non officiels comme debian-multimedia.org . Ensuite, aptitudele numéro de version disponible sera affiché (au bas de la page de détails d'un paquet donné) et vous permettra d'en sélectionner un.

Si vous vous retrouvez dans une situation où les programmes sont en conflit en raison de l'utilisation de référentiels non officiels, un message "Broken: ..." s'affiche en haut. Vous pouvez taper l ~ b (limite / drapeau / cassé) et simplement obtenir une liste des paquets en conflit. Il est beaucoup plus facile de résoudre le conflit manuellement.

De plus, vous pouvez utiliser " l" pour limiter la liste de paquets. Imaginez que vous cherchiez des paquets qui commencent par " openoffice ", puis appuyez sur " l" et tapez " ^openoffice" (c'est une expression régulière) et vous ne verrez que ces paquets. Choisissez une "liste de paquets plats" dans le menu et vous obtiendrez rapidement votre objectif.

Le manuel complet est très volumineux et vous offre beaucoup plus de filtres et de possibilités. Même si vous ne les connaissez pas, aptitudec'est un substitut pratique apt-getet vous pouvez l'utiliser avec des paramètres communs tels que:

aptitude install ... (install or upgrade a package)
aptitude remove ... (remove the binary portions of a package but preserve your /etc configuration)
aptitude purge ... (remove the package completely including your configuration)
Signum
la source
2
En fait, à partir de Lenny, apt-get suit également les paquets installés en tant que dépendances de quelque chose que vous avez explicitement demandé. J'utilise moi-même aptitude, mais apt-get autoremovesupprime maintenant les paquets qui ont été installés en tant que dépendances d'un paquet qui a été supprimé depuis.
Telemachus
Nowdays vous pouvez également utiliser juste aptet il peut faire un mélange de choses qui apt-getet apt-cacheutilisé pour faire. Par exemple, apt search foolistera les paquets qui contiennent un foonom ou une description. apt install fooinstallera le paquet appelé foosi disponible et apt policy foolistera la version actuellement installée et toutes les versions disponibles du paquet foo.
Mikko Rantalainen le
Le aptitudepeut encore faire plus que aptmais tout simplement aptest souvent beaucoup plus rapide.
Mikko Rantalainen le
5

En plus de fournir une jolie interface utilisateur de console lorsque vous exécutez aptitudesans argument, il regroupe les différentes apt-*commandes (et dselect) dans un seul utilitaire.

Pour rechercher un paquet et l'installer, utilisez apt-get:

apt-cache search somepkg
apt-get install somepkg

..mais avec aptitude c'est la même commande:

aptitude search somepkg
aptitude install somepkg

aptitudepossède des fonctionnalités supplémentaires, telles aptitude changelog somepkgque la conservation de packages (pour empêcher leur mise à niveau) - rien que vous ne puissiez obtenir avec d'autres commandes / méthodes, il est simplement plus unifié et agréable à utiliser.

dbr
la source
3
Dommage qu'il n'ait pas d'équivalent "apt-cache policy".
Hayalci
4

comme vous le savez lorsque vous installez un paquet s'il a besoin d'autres paquets (dépendances), ils seront également téléchargés et installés. Au moment de l'installation, aptitude suit les paquets fournis avec celui-ci. Ainsi, lorsque vous supprimez cette dernière, aptitude vous demandera de supprimer les autres dépendances "orphelines" (maintenant inutilisées). apt-get les gardera silencieusement dans votre système si vous supprimez le paquet "principal".

il semble que les dernières versions d'apt-get aient une fonctionnalité similaire: http://www.psychocats.net/ubuntu/aptitude

gpilotino
la source
aptitudeou aptne conserve pas la liste des paquetages installés en tant que dépendances d’un paquet donné. Il suit simplement si un paquet a été installé manuellement ou automatiquement. Et si un paquet a été marqué comme installé automatiquement et qu'aucun autre paquet ne dépend ni ne le recommande, il sera supprimé avec apt autoremoveou aptitude dist-upgrade.
Mikko Rantalainen le
3

La plus grande différence est qu'aptitude est conçu pour être interactif et que les outils apt conviennent mieux au travail de script. Vous pouvez utiliser ce dernier, c’est-à-dire les outils apt, de manière interactive, avec beaucoup plus d’efforts pour obtenir les mêmes résultats que ceux fournis par aptitude. Si vous deviez vous contenter d'un outil ou d'un autre pour une raison quelconque, vous devez décider des efforts que vous souhaitez consacrer à la gestion de vos packages.

utilisateur3146
la source
1

L'un des principaux avantages d'aptitude est sa capacité à calculer les dépendances. Premièrement, il peut gérer des interdépendances compliquées sans intervention de votre part, ce qui provoque souvent des échecs chez apt-get. Mais si vous n'aimez pas la solution qu'il vous a proposée (et que votre propre solution lui permettra de démontrer à quel point elle le juge bon), vous pouvez lui demander de partir et de proposer une autre solution pour résoudre le conflit.

Il fait vraiment une gestion de paquet géniale.

Coops
la source
1

La plus grande différence est la suivante: tapez "aptitude" sans aucun paramètre.

Il vous donne une interface utilisateur textuelle, vous pouvez utiliser le clavier pour rechercher / naviguer, etc. Voir des informations sur les dépendances, les dépendances inversées, toutes les versions disponibles d'un paquet, et vous pouvez effectuer n'importe quelle opération du gestionnaire de paquets à partir de cet écran.

Vous pouvez appuyer sur "g" pour passer en revue les modifications, modifier les ajouts et suppressions de packages si nécessaire et appliquer toutes les opérations en attente.

Un excellent moyen visuel de gestion de paquets sur une connexion SSH ou un vieux terminal ordinaire.

Hayalci
la source