Aptitude vs apt-get: Quel est l'outil recommandé (c'est-à-dire le «bon») à utiliser?

94

Il y a quelque temps, j'ai lu que aptitudec'était l'outil préféré pour l'installation sur des systèmes basés sur Debian. Mais lorsque vous cherchez comment administrer un système basé sur Debian, il est rarement fait mention d'aptitude. La plupart des gens semblent préférer apt-get- et c'est même vrai pour les pages du wiki Debian!

Ainsi, je me demande si j'ai oublié quelque chose. Quel est le bon outil à utiliser?

Vokuhila-Oliba
la source
Fait intéressant, Ubuntu ne s'installe plus aptitudepar défaut.
Escargot mécanique
2
La différence la plus importante pour moi est qu'après avoir lu la documentation en détail, je ne trouve aucun moyen d'obtenir le code source d'un paquet via aptitude. apt-get source package-nameva le faire, mais je n'ai vu aucun équivalent d'aptitude
EricR
2
Une chose est que cela aptitude search package-namefonctionne dans l'aptitude. Un autre est aptitude why package-nameégalement utile mais pas dans apt-get. Je pense aussi que la ligne de commande aptitudeest un peu nettoyée par rapport à apt-get. Mais comme vous l'avez remarqué, il n'y en a aptitude build-dep package-namepas aptitude source package-name.
Anders

Réponses:

73

aptitudeet apt-getfonctionnent de la même manière pour de nombreuses tâches, mais dans les cas les plus difficiles, tels que les mises à niveau de distribution ( apt-get dist-upgradevs aptitude full-upgrade), elles ont des règles différentes, et les règles d’aptitude sont presque toujours meilleures dans la pratique où elles sont en désaccord.

La raison pour laquelle vous voyez plus de documentation pour apt-getplus aptitudeest la plupart du temps d' inertie: aptituden'a pas été l'avant recommandé d'APT pour tout ce temps, tant de la documentation existante n'a pas été mis à jour, et il y a beaucoup de gens qui reconnaissent les avantages de aptitudeplus apt-getmais utilisez par apt-getréflexe.

Je suis récemment arrivé au point où je suis généralement suivi aptavec un imot et non pas -lorsque je tape.

Post-scriptum Notez que les règles utilisées dans apt-getet aptitudesont des cibles mobiles - comme le note Hubert dans des commentaires, le chemin de mise à niveau recommandé par Debian Lenny utilise maintenant apt-get, pas aptitude. Cela témoigne du fait que apt-getle paquet actuel conserve moins d’état que le précédent aptitude, il n’a donc pas à craindre que l’état APT ne soit pas «propre», et que les apt-getrègles soient plus intelligentes qu’avant. J'utilise toujours et recommande aptitudeplus apt-get, mais c'est une recommandation plus nuancée

Charles Stewart
la source
6
En plus de cela, aptitude permet de naviguer facilement à travers les résolutions de conflits possibles, alors qu'avec apt-get, vous n'avez généralement qu'un seul moyen indiqué et soit vous l'acceptez, soit vous devez le résoudre à la main (par exemple, en utilisant dpkg).
Liori
20
apt-geta l'avantage d'être plus efficace en termes de mémoire. Il est peu probable que cela soit perceptible par la plupart des utilisateurs. Je n'étais pas vraiment au courant avant d'essayer de mettre à niveau des paquets sur une installation complète de Debian avec 32 Mo de RAM. aptitudea fini par se débattre dans l'échange environ une heure par course; apt-get était nettement plus rapide.
Intuition le
4
La documentation officielle de squeeze de Debian indique explicitement qu'il ne faut pas utiliser la aptitudemise à niveau de Lenny, même si elle était prise en charge pour les mises à niveau précédentes. Je ne pense donc pas que ce soit seulement de l'inertie ...
Hubert Kario
@ HubertKario - Oui, en effet. J'ai mis à jour ma réponse.
Charles Stewart
Je peux seulement dire que apt-getpresque toujours jette des erreurs (expérience du serveur Ubuntu 12.10, 14.04) alors que vous aptitudepouvez réellement faire quelque chose. Je ne comprends toujours pas comment apt-get existe toujours.
Totty.js
20

aptitudeil est pratique de montrer quels programmes dans une recherche que vous avez déjà installés sur le système (avec l’aide de grep):

aptitude search flash | grep ^i

En fait, aptitudela recherche est beaucoup plus puissante que ce que vous obtenez par le biais de la tuyauterie grep, car elle prend en charge la recherche contextuelle:

Par exemple, ceci trouve tous les paquets avec le nom 'flash' installé dans le nom du paquet:

aptitude search '~iflash'

Une "forme longue" équivalente à la "forme courte" ~i:

aptitude search '?installed(flash)'

Notez que les modèles de recherche sont libres (sans ancrage) par défaut. Pour les ancrer, vous devez utiliser des modèles d'ancrage ' ^' (début de chaîne) et / ou ' $' (fin de chaîne).

Pour trouver tous les paquets dont le nom commence par 'ttf' ou par 'font':

aptitude search '(^ttf|^font)'

(Remarque: il s'agit d'une solution de contournement pour un bogue dans la aptitudemesure où l'expression rationnelle correcte '^(ttf|font)'ne fonctionne pas correctement. Elle recherche les packages dont les noms commencent par «ttf» ou contiennent «font».)

Autres aptitudecaractéristiques intéressantes:

Montrer tous les paquets avec 'firmware' dans leur nom qui ont aussi AUSSI 'sans fil' dans leur description:

aptitude search 'firmware ~dwireless'

ou forme longue:

aptitude search '?and(?name(firmware),?description(wireless))'

(Remarque: dans la forme abrégée, les arguments délimités par des espaces sont AND dans des guillemets; s'ils sont passés en tant qu'arguments de ligne de commande argv [] distincts, ils sont OU).

p   atmel-firmware       - Firmware for Atmel at76c50x wireless networking chips.
p   firmware-atheros     - Binary firmware for Atheros wireless cards
...
p   libertas-firmware    - Firmware for Marvell's libertas wireless chip series
p   zd1211-firmware      - Firmware images for the zd1211rw wireless driver

~U affiche tous les paquets pouvant être mis à niveau à partir de leurs versions actuelles avec les nouvelles versions:

# aptitude update ; aptitude versions '~U'
Package virtualbox-4.1:            
i   4.1.18-78361~Debian~squeeze                       100
p   4.1.20-80170~Debian~squeeze     <NULL>            500

Montrer les paquets qui recommandent 'gcc-multilib'

$ aptitude search '~DRecommends:gcc-multilib'
i   libc6-dev-i386   - Embedded GNU C Library: 32-bit development libraries for AMD64

Expliquez pourquoi il est peut-être nécessaire d'installer des «utilitaires de fusion»

$ aptitude why fuse-utils
i   xorg           Depends    xterm | x-terminal-emulator
pi  gnome-terminal Provides   x-terminal-emulator
pi  gnome-terminal Recommends gvfs
pi  gvfs           Depends    libgdu0 (>= 2.29.90)
pi  libgdu0        Depends    udisks (< 1.1.0)
pi  udisks         Recommends ntfsprogs
pi  ntfsprogs      Depends    fuse-utils (> 2.5.0)

(Cet exemple montre une partie de la folie résultant de la configuration par défaut depuis Squeeze (?) D'installer tous les paquets "Recommends". L'installation de gnome-terminal finit par installer ntfsprogs et fuse-utils, egad! Je pense que la plupart des gens veulent juste la perspective du terminal et pas l'intégration NTFS intégrée, qui est facultative, à moins d'indication contraire.)

Trouvez tous les paquets qui fournissent le service "mail-transport-agent":

$ aptitude search '?provides(mail-transport-agent)'
p   citadel-mta          - complete and feature-rich groupware server (mail transport agent)
...
p   nullmailer           - simple relay-only mail transport agent
p   postfix              - High-performance mail transport agent
i   sendmail-bin         - powerful, efficient, and scalable Mail Transport Agent
p   ssmtp                - extremely simple MTA to get mail off the system to a mail hub
p   xmail                - advanced, fast and reliable ESMTP/POP3 mail server

Affiche tous les noms de paquetages installés, qui ne sont ni essentiels ni installés automatiquement par dépendances:

$ aptitude search '~i!(~E|~M)' -F '%p'

Malheureusement, ce matériel est plutôt mal documenté et difficile à trouver, mais voici la meilleure référence (du mainteneur d'aptitude).

Chris P
la source
4
Les fonctionnalités de recherche sont disponibles sur apt-getviaapt-cache search NAME
EricR
@EricR true mais je n'ai pas trouvé de capacités de recherche telles que celles
niceman le
4

Selon la FAQ de Debian GNU / Linux sur la gestion des paquets , aptitude est plus complexe que apt-get et dépend des outils de gestion de paquets moins complexes apt-get et dpkg.

Par conséquent, pour des besoins plus simples, vous pouvez utiliser des outils plus simples, tandis que pour des besoins plus complexes, vous pouvez compter sur un outil plus sophistiqué (apitude).

Extrait de la FAQ Debian: "aptitude fournit les fonctionnalités de dselect et d’apt-get, ainsi que de nombreuses fonctionnalités supplémentaires, qui ne figurent dans aucun de ces programmes."

Pagliuca
la source
3

aptitude marque les paquets qui ont été installés en raison d’une dépendance avec la balise automatique. Si vous purgez ou supprimez un paquet, aptitude supprimera automatiquement les paquetages installés automatiquement qui ne sont plus utilisés parallèlement au paquet que vous voulez purger ou supprimer.

C'est la raison principale pour laquelle je pense personnellement que l'aptitude est toujours meilleure qu'apt.

Broyeur de chair
la source
Citation nécessaire, mais ce serait une différence convaincante.
Kzqai
Fait en apt-getfait cela aussi, avec apt-get autoremove <package-name>. Les deux marques apt-getet aptitudeles packages installés automatiquement
Legionair
Mais aptitudenettoyez les packages automatiques à chaque utilisation. Bien que apt-getvous ayez besoin de commencer cela explicitement.
Anders
2

Il n'y a pas d'outil adéquat, vous pouvez combiner les deux en fonction de celui que vous trouvez le plus pratique pour la tâche à accomplir. aptitude est un excellent outil pour tester / utiliser les utilisateurs, mais il a tendance à être moins fiable pour la mise à niveau distante d’une stable à l’autre. Voir mon article apt-get, aptitude,… choisissez le bon gestionnaire de paquets pour vous .

Raphaël Hertzog
la source