Aptitude vs. apt-get: ¿Cuál es la herramienta recomendada (también conocida como la "correcta") para usar?

94

Hace algún tiempo leí que aptitudees la herramienta preferida para la instalación en sistemas basados ​​en Debian. Pero cuando buscas cómo administrar un sistema basado en Debian, rara vez se menciona la aptitud. La mayoría de la gente parece preferir apt-get, ¡y eso es cierto para las páginas wiki de Debian!

Por lo tanto, me pregunto si me he perdido algo. ¿Cuál es la herramienta correcta para usar?

Vokuhila-Oliba
fuente
Curiosamente, Ubuntu ya no se instala aptitudepor defecto.
Caracol mecánico
2
La diferencia más importante para mí es que después de leer los documentos a fondo, no puedo encontrar la forma de obtener la fuente de un paquete a través de aptitude. apt-get source package-namelo haré, pero no he visto un equivalente de aptitud
EricR
2
Una cosa es que aptitude search package-namefunciona en aptitud. Otro es aptitude why package-nametambién útil pero no en apt-get. También creo que la línea de comando aptitudeestá un poco limpia en comparación con apt-get. Pero como notaron, hay aptitude build-dep package-namepero no aptitude source package-name.
Anders

Respuestas:

73

aptitudey apt-getfuncionan igual para muchas tareas, pero para los casos más difíciles, como las actualizaciones de distribución ( apt-get dist-upgradevs. aptitude full-upgrade), tienen reglas diferentes, y las reglas de aptitud casi siempre son mejores en la práctica cuando no están de acuerdo.

La razón por la que ve más documentación para apt-getmás aptitudees principalmente la inercia: aptitudeno ha sido el front-end recomendado para APT durante tanto tiempo, gran parte de la documentación existente no se ha actualizado, y hay muchas personas que reconocen las ventajas de aptitudemás de apt-getpero usa apt-getreflexivamente.

Recientemente llegué al punto en el que generalmente sigo aptcon una iy no con una -cuando escribo.

Postdata Tenga en cuenta que las reglas utilizadas apt-gety aptitudelos objetivos móviles son: como señala Hubert en los comentarios, la ruta de actualización recomendada por Debian Lenny ahora usa apt-get, no aptitude. Esto refleja el hecho de que apt-getrealiza un seguimiento de menos estado sobre el paquete actual que aptitude, y por lo tanto, no necesita preocuparse de que el estado APT no esté "limpio", y porque las apt-getreglas son más inteligentes de lo que solían ser. Todavía uso y recomiendo aptitudemás apt-get, pero es una recomendación más matizada

Charles Stewart
fuente
66
Además de eso, aptitude permite navegar fácilmente a través de posibles resoluciones de conflictos, mientras que con apt-get generalmente solo se muestra una forma posible y la acepta o tiene que hacer la resolución a mano (por ejemplo, usando dpkg).
liori
20
apt-gettiene la ventaja de ser más eficiente en memoria. Es poco probable que esto sea notable para la mayoría de los usuarios; No lo sabía hasta que intenté actualizar los paquetes en una instalación completa de Debian con 32 MB de RAM. aptitudeterminó golpeándose en el intercambio durante aproximadamente una hora por carrera; apt-get fue significativamente más rápido.
intuido
44
La documentación oficial de compresión de Debian establece explícitamente que no se debe usar aptitudepara la actualización de Lenny a pesar de que fue compatible con actualizaciones anteriores, por lo que no creo que sea solo inercia ...
Hubert Kario
@HubertKario - Sí, de hecho. He actualizado mi respuesta.
Charles Stewart
Solo puedo decir que apt-getcasi siempre arroja errores (experiencia del servidor Ubuntu 12.10, 14.04) mientras aptitudeque en realidad puede hacer algo. Todavía no entiendo cómo existe apt-get.
Totty.js
20

aptitudehace que sea conveniente mostrar qué programas en una búsqueda ya ha instalado en el sistema (con la ayuda de grep):

aptitude search flash | grep ^i

En realidad, aptitudela búsqueda es mucho más poderosa de lo que se obtiene grep, ya que admite la búsqueda contextual:

por ejemplo, esto encuentra todos los paquetes con 'flash' en el nombre del paquete que están instalados:

aptitude search '~iflash'

Una "forma larga" equivalente de la "forma corta" ~i:

aptitude search '?installed(flash)'

Tenga en cuenta que los patrones de búsqueda son gratuitos (sin anclar) de forma predeterminada. Para anclarlos, debe usar patrones de anclaje ' ^' (principio de la cadena) y / o ' $' (final de la cadena).

Para buscar todos los paquetes cuyos nombres comienzan con 'ttf' o 'font':

aptitude search '(^ttf|^font)'

(Nota: esta es una solución alternativa para un error aptitude, ya que la expresión regular correcta de '^(ttf|font)'no funciona correctamente: encuentra paquetes cuyos nombres comienzan con 'ttf' o contienen 'font'.)

Otras aptitudecaracterísticas ingeniosas :

Muestre todos los paquetes con 'firmware' en su nombre que TAMBIÉN tienen 'inalámbrico' en su descripción:

aptitude search 'firmware ~dwireless'

o forma larga:

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

(Nota: en la forma abreviada, los argumentos delimitados por espacios se escriben en AND entre comillas; si se pasan como argumentos de línea de comandos argv [] separados, se ORed).

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 muestra todos los paquetes que se pueden actualizar desde sus versiones actuales con nuevas versiones:

# 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

Mostrar paquetes que recomiendan 'gcc-multilib'

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

Explique por qué podría ser necesario instalar 'fuse-utils'

$ 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)

(Este ejemplo muestra algunas de las locuras resultantes del valor predeterminado ya que Squeeze (?) De instalar todos los paquetes "Recommends". La instalación de gnome-terminal termina instalando ntfsprogs y fuse-utils, por ejemplo, creo que la mayoría de la gente solo quiere la perspectiva del terminal y no la integración NTFS integrada, que es opcional, a menos que lo especifiquen).

Encuentre todos los paquetes que brindan el servicio "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

Muestre todos los nombres de paquetes que están instalados, que no son esenciales ni instalados automáticamente por dependencias:

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

Desafortunadamente, estas cosas están bastante mal documentadas y son difíciles de encontrar, pero aquí está la mejor referencia (del responsable de "aptitude").

Chris P
fuente
44
Las funciones de búsqueda están disponibles en apt-getviaapt-cache search NAME
EricR
@EricR es cierto pero no encontré capacidades de búsqueda como estas
niceman
4

Según las preguntas frecuentes de Debian GNU / Linux sobre la gestión de paquetes , aptitude es más complejo que apt-get y depende de las herramientas de gestión de paquetes menos complejas apt-get y dpkg.

Por lo tanto, para necesidades más simples, puede usar las herramientas más simples, mientras que para necesidades más complejas, puede contar con la herramienta más sofisticada (aptitud).

Citado de las Preguntas frecuentes de Debian: "aptitude proporciona la funcionalidad de dselect y apt-get, así como muchas características adicionales que no se encuentran en ninguno de los programas".

pagliuca
fuente
3

aptitude marca paquetes que se instalaron debido a una dependencia con la etiqueta automática. Si ahora purga o elimina un paquete, aptitude eliminará automáticamente los paquetes instalados automáticamente que ya no se usan junto con el paquete que desea purgar o eliminar.

Esta es la razón principal por la que personalmente creo que la aptitud siempre es mejor que apta.

Grillete de carne
fuente
La cita era necesaria, pero esa sería una diferencia convincente.
Kzqai
En realidad apt-gethace eso también, con apt-get autoremove <package-name>. Ambos apt-gety aptitudemarcan paquetes instalados automáticamente
Legionair
Pero aptitudelimpie los paquetes automáticos cada vez que se use. Si apt-getbien necesitas comenzar eso explícito.
Anders