¿Cuál es la diferencia real entre "apt-get" y "aptitude"? (¿Qué tal "wajig"?)


256

Sé que tanto apt-gety aptitudeson interfaces de gestión de paquetes línea de comandos en Debian Linux derivan, con diferentes opciones, pero todavía estoy un poco confundido. Debajo del capó, ¿no están usando el mismo sistema APT?

¿Por qué Debian mantiene estas herramientas paralelas? (Pregunta adicional : ¿qué demonios es wajig ?)


Sé que no es la respuesta correcta para su pregunta, pero ¿por qué no puede intentar sináptica? es muy amigable con el usuario y descarga e instala dependencias automáticamente. ¿Gnome no está presente en su sistema?
Hemant

Soy parcial, pero creo que esta pregunta en el sitio de Ubuntu SE podría ser relevante.
David Z


@Wim, debido a la porción wajig de esta pregunta, decidí fusionar 244 en esta pregunta en lugar de al revés
xenoterracide

1
Vale la pena señalar que aptitude está programado para su eliminación de la instalación predeterminada en la próxima versión de Ubuntu (aunque siempre puede instalarlo usando apt-get después)
Rob Cowell

Respuestas:


223

La diferencia más obvia es que aptitudeproporciona una interfaz de menú de terminal (muy similar a Synaptic en una terminal), mientras apt-getque no.

Teniendo en cuenta solo las interfaces de línea de comandos de cada una, son bastante similares y, en su mayor parte, realmente no importa cuál use. Las versiones recientes de ambos rastrearán qué paquetes se instalaron manualmente y cuáles se instalaron como dependencias (y, por lo tanto, elegibles para la eliminación automática). De hecho, creo que incluso más recientemente, las dos herramientas se actualizaron para compartir realmente la misma base de datos de paquetes instalados manualmente o automáticamente, por lo que los casos en los que instala algo con apt-get y luego aptitude quiere desinstalarlo son en su mayoría una cuestión de el pasado.

Hay algunas diferencias menores:

  • aptitude eliminará automáticamente los paquetes elegibles, mientras que apt-get requiere un comando separado para hacerlo
  • Los comandos para actualizar vs. dist-upgrade se han renombrado en aptitud para los nombres probablemente más precisos safe-upgrade y full-upgrade , respectivamente.
  • aptitude realmente realiza las funciones no solo de apt-get, sino también algunas de sus herramientas complementarias, como apt-cache y apt-mark.
  • aptitude tiene una sintaxis de consulta ligeramente diferente para la búsqueda (en comparación con apt-cache)
  • aptitude tiene los comandos por qué y por qué no para decirle qué paquetes instalados manualmente están impidiendo una acción que desee realizar.
  • Si las acciones (instalación, eliminación, actualización de paquetes) que desea realizar causan conflictos, aptitude puede sugerir varias posibles soluciones. apt-get solo dirá "Lo siento Dave, no puedo permitir que hagas eso".

Hay otras pequeñas diferencias, pero esas son las más importantes que se me ocurren.

En resumen, aptitude pertenece más apropiadamente a la categoría con Synaptic y otras interfaces de administrador de paquetes de nivel superior. Resulta que también tiene una interfaz de línea de comandos que se parece a apt-get.

Bonus Round: ¿Qué es wajig?

¿Recuerdas cómo mencioné esas herramientas "complementarias" como apt-cache y apt-mark? Bueno, hay un montón de ellos, y si los usa mucho, es posible que no recuerde cuáles proporcionan qué comandos. wajig es una solución a ese problema. Es esencialmente un despachador, un envoltorio alrededor de todas esas herramientas. También aplica sudo cuando es necesario. Cuando dices wajig install foo, wajig dice "Ok, installes proporcionado por apt-gety requiere privilegios de administrador", y se ejecuta sudo apt-get install foo. Cuando dices wajig search foo, wajig dice "Ok, searches proporcionado por apt-cachey no requiere privilegios de administrador", y se ejecuta apt-cache search foo. Si usa wajig en lugar de apt-get, apt-mark, apt-cache y otros, entonces nunca tendrá este problema:

$ apt-get search foo
E: Invalid operation search

Si desea saber qué está haciendo wajig detrás de escena, qué herramientas está utilizando para implementar un comando en particular, tiene --simulatey --teachingmodos.

Dos comandos wajig que uso con frecuencia son wajig listfiles fooy wajig whichpkg /usr/bin/foo.


Un gran problema que tuve con aptitude es que toma mucho tiempo completar las pestañas en los nombres de paquetes (por ejemplo, aptitude install linux-impestañas), mientras que es muy rápido para apt-get. Parece que hay algo de caché presente en la familia apt-get que carece de aptitud.
Levesque

12
aptitudeTambién tiene lo increíble aptitude searchque puedes usar con patrones de búsqueda muy potentes . Usted tiene aptitude reinstall. También puede usar la interfaz ncurses (menú de terminal) para preparar operaciones complejas de paquetes como actualización parcial, eliminar un paquete, congelar otro, actualizar este, que luego puede ejecutar en una sola operación ... Ah, y tiene un resolución de conflictos interactiva .
Totor

3
@Totor Holy Cow, usando la interfaz Ncurses de Aptitude para preparar comandos, ¡acabo de venderme en Aptitude de una vez por todas! (Después de años de pensar en la aptitud vale la pena hacerlo, pero escribiendo apt-get de la memoria muscular)
TJ Ellis

2
... y aptitudetambién tiene aptitude download package-nameque obtener el paquete .deb file!
Totor

2
Es solo una cosa que he encontrado que no está dentro, aptitudesino que está dentro apt-get, y eso es apt-get --compile source package-name. apt-get build-dep package-nameexisten pero creo que aptitude build-dep package-namehacer un mejor trabajo.
Anders

71

A menudo me he preguntado. Wikipedia destaca que la principal característica distintiva es que aptitude tiene una interfaz de modo de texto (maldiciones) a pantalla completa. El hecho de que pueda usar la mayoría de los apt-getargumentos de comando consigo aptitudemismo es solo una decisión de diseño para facilitar que los apt-getusuarios se muevan aptitudey viceversa.

Nunca lo he usado wajig, pero la documentación sugiere que es solo un script que sabe si le está pasando un debarchivo (cuando se ejecuta dpkg) o un aptnombre de paquete (cuando se ejecuta en su apt-getlugar). ¿Podrías probarlo y ver si eso es lo que hace?

Por supuesto, la verdadera diferencia es:

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

52
¡No! aptitudetiene mas. Olvidaste poner las -vbanderas interminables moo. (Puedes subir -vvvvvv)
Umang

12
No olvides los importantes Super Cow Powers, que apt-gettiene pero aptitudeno tiene. (Pruébelo --helpen ambos)
derobert

lmao es una respuesta divertida de leer, a pesar de que la respuesta de @ ryan es mucho más elaborada;)
Michael Trouw

26

aptitude es el programa preferido para la administración de paquetes desde la consola, tanto para instalaciones de paquetes como para actualizaciones de paquetes o sistemas en Debian.

Aquí hay una descripción general de la herramienta y las características que tiene sobre apt-get: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

Entonces, mi consejo es simplemente apt-get install aptitude :)


2
Las notas de la versión dicen que apt-get ahora se recomienda por encima de la aptitud para que las actualizaciones se reduzcan.
jrdioko

1
Sí, pero solo por eso. De lo contrario, se consideran iguales, pero aptitudetiene muchas características más avanzadas, como la búsqueda y el modo de pantalla completa, que apt-get.
Anders

Por alguna razón usé aptitude para instalar emacs y sin mirarlo eliminé gdm! Así que por ahora usaré apt-get pero tengo mucha curiosidad por la aptitud.
TomFirth

20

aptituderecuerda qué paquetes se solicitaron explícitamente y cuáles solo se instalaron debido a dependencias. Desinstalará automáticamente los paquetes que no se solicitaron explícitamente cuando ya no se necesitan.

apt-get trata los paquetes solicitados explícitamente y sus dependencias de la misma manera.

Así que mejor uso aptitude, esto ayuda a mantener limpio su sistema.


44
Esto solía ser cierto, pero sé que mi apt-get tiene un apt-get autoremovecomando para eliminar paquetes instalados solo como dependencias. No sé cuándo se agregó esta función, pero un sitio web sugiere que podría haber sucedido con Debian Lenny (junio de 2010).
Gaurav

8
apt-get autoremoveno elimina los paquetes instalados solo como dependencias, elimina las dependencias huérfanas, lo cual es una sutil diferencia; no puede decir si un paquete 'leaf' se instaló con intención o como una dependencia, por lo que lo deja, donde aptitude lo conocerá y lo eliminará.
pjz

¡Estoy vendido! Hay otras cosas buenas acerca de aptitudeesto, pero esta es sin duda una característica asesina.
iconoclasta

12

apt-get, así como las diversas herramientas complementarias, usan significativamente menos memoria que las invocaciones de línea de comandos respectivas aptitudey son un poco más rápidas. Estaba completamente inconsciente de esto hasta que intenté actualizar la instalación de Debian en un viejo thinkpad pentium con 32MB de RAM. Se necesitaría una o dos horas de intercambio swap para ejecutarse apt-get, que se completó con éxito; aptitudefallaría después de pensar un período de tiempo más largo.

Esta distinción es más o menos irrelevante en cualquier cosa que se parezca a un sistema de escritorio moderno.


9

Basándose en la respuesta de @ Gaurav, ¡los huevos de pascua en los dos administradores de paquetes son bastante divertidos !:

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.

y así.



7

Como se mencionó , http://pthree.org/2007/08/12/aptitude-vs-apt-get/ , aptitudetiene una interfaz de línea de comandos mucho más fácil de usar.

Debajo del capó, ¿no están usando el mismo sistema APT? Si.

El sistema subyacente no es solo apt, sino dpkg. Este sistema es tan tonto como RPM, solo puede manejar la instalación y administración de paquetes individuales. Rastrea qué archivos instalados pertenecen a qué paquete.

aptmaneja las descargas de repositorios, el seguimiento de dependencias, etc. para todos los paquetes individuales, que luego instala utilizando dpkg. aptitudehace lo mismo, con una interfaz diferente.


6

Tanto apt-get como aptitude dependen de la biblioteca APT, sí.

Vea mi respuesta en serverfault.com .

Debian no es una entidad monolítica, hay personas con opiniones diferentes y el responsable de aptitudes decidió que apt-get tenía algunas deficiencias y quería construir algo mejor con aptitude. Él mejoró la lógica para encontrar soluciones para escenarios de actualización complejos, agregó una GUI para la consola, etc. Y hay más que solo apt-get y aptitude, vea mi artículo apt-get, aptitude, ... elija el administrador de paquetes adecuado para usted .


6

No estoy seguro de si esto todavía se mantiene, pero el desarrollador de Debian, Joey Hess, siempre solía abogar por la aptitud sobre apt-get. Por supuesto, las cosas cambian a medida que el software evoluciona. Apt-get ahora maneja las dependencias mejor de lo que solía hacerlo. De http://lists.debian.org/debian-user/2004/04/msg03138.html

Fecha: martes 20 de abril de 2004 22:27:12 -0400 De: Joey Hess

Nueve razones por las que deberías usar aptitude en lugar de apt-get o dselect.

  1. aptitud puede parecerse a apt-get

    Si ejecuta 'actualización de aptitude' o 'actualización de aptitude' o 'instalación de aptitude', se ve y funciona igual que apt-get, con algunas mejoras. Entonces no hay curva de aprendizaje.

    (Si eres un usuario de dselect, la curva de aprendizaje obviamente no es uno de tus problemas).

  2. aptitude rastrea paquetes instalados automáticamente

    Deje de preocuparse por recortar bibliotecas no utilizadas y paquetes de soporte de su sistema. Si usa aptitude para instalar todo, hará un seguimiento de los paquetes que se obtienen solo por dependencias y eliminará esos paquetes cuando ya no sean necesarios.

  3. aptitud maneja sanamente recomienda

    Un fallo de larga data de apt-get ha sido su falta de soporte para la relación Recommends. Lo cual es un problema porque muchos paquetes en Debian dependen de Recommends para incorporar software que el usuario promedio generalmente usa con el paquete. Esta es una causa común de problemas, a pesar de que apt-get recientemente pudo al menos mencionar los paquetes recomendados, es fácil pasar por alto sus advertencias.

    Aptitude admite Recommends de forma predeterminada, y también se puede configurar para admitir Sugerencias. Incluso admite la instalación de paquetes recomendados cuando se usa en modo de línea de comandos.

  4. use aptitude como usuario normal y evite mangueras en su sistema

    Tal vez no sabía que puede ejecutar aptitude en modo gui como usuario normal. Realice los cambios que le gustaría probar. Si se mete en un verdadero desastre, puede presionar 'q' y salir, sus cambios no se guardarán. (Aptitude también le permite usar ctrl-u para deshacer cambios). Dado que se está ejecutando como un usuario normal, no puede controlar su sistema hasta que le indique su aptitud para hacer algo, momento en el que le pedirá su contraseña de root.

  5. aptitude tiene una poderosa interfaz de usuario y capacidades de búsqueda

    Entre el navegador categórico de aptitude y su gran soporte para el filtrado de estilo mutt y la búsqueda de paquetes por nombre, descripción, mantenedor, dependencias, etc., debería poder encontrar paquetes más rápido que nunca utilizando aptitude.

  6. aptitude facilita el seguimiento de software obsoleto

    Si Debian deja de distribuir un paquete, apt lo dejará en su sistema indefinidamente, sin advertencias y sin actualizaciones. Aptitude enumera dichos paquetes en su sección "Paquetes obsoletos y creados localmente", para que pueda estar informado del problema y hacer algo al respecto.

  7. aptitude tiene una interfaz para el sistema de tareas de Debian

    Aptitude le permite utilizar el sistema de tareas de Debian tal como fue diseñado para ser utilizado. Puede explorar las tareas disponibles, seleccionar una tarea para instalar y luego profundizar en ella y deseleccionar partes de la tarea que no desea. apt-get no tiene soporte para tareas, y aptitude es mejor incluso que herramientas de propósito especial como taskel.

  8. aptitud admite múltiples fuentes

    Si su sources.list está configurado para hacer múltiples versiones de un paquete disponibles, aptitude le permite profundizar para ver las versiones disponibles y elegir una versión no predeterminada para instalar. Si un paquete se rompe inestable, simplemente vuelva a la versión en prueba.

  9. aptitud registra sus acciones

    El paquete de registros de aptitud que instala, actualiza y elimina a / varlog / aptitude, que puede ser útil para averiguar por qué las cosas comenzaron a romperse después de la actualización de ayer, o cuando eliminó un paquete parcial.

- ver timido jo

=================== también hay una discusión más reciente de 2010 aquí https://superuser.com/questions/93437/aptitude-vs-apt-get-which- es-la-recomendada-aka-la-herramienta-correcta-para-usar en StackExchange.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.