Diferencia entre aptitude y apt
Hace tiempo, cuando era muy novato en esto del software libre, y usaba Red Hat, una de las envidias reconocidas que muchos usuarios de distribuciones basadas en RPM teníamos, era lo fácil que resultaba instalar y actualizar software en Debian, gracias a Advanced Package Tool, más conocido como apt, y a través del comando apt-get. Luego llegaron versiones de apt que fueron llevadas a esas distribuciones, o implementaciones propias. Así, además de apt, pero algo inspiradas en él, existen urpmi, yum, apt4rpm, etc.
Sin embargo, el encanto de Debian sigue manteniéndose, y es que por supuesto, este no se encuentra sólo en usar apt-get, sino en su gran cantidad de paquetes disponibles. Entre ellos, uno que va a facilitar enormemente la gestión del resto: aptitude.
aptitude es un gestor de paquetes. Instala, elimina, actualiza y descarga automáticamente los paquetes que se le indiquen, así como sus dependencias, y opcionalmente, recomendaciones y sugerencias (recordemos que los paquetes, en Debian, tienen bastantes relaciones entre sí, más allá de la dependencia).
Aptitude tiene diferencias y similitudes con apt-get. Ambos hacen uso de apt, pero aptitude tiene mejor reputación que apt-get en actualizaciones complicadas, en que algunos paquetes entren en conflicto, o se desee actualizar tan sólo una parte del sistema, para que no queden paquetes con sus dependencias rotas. No es sólo que el algoritmo de actualización pueda ser mejor o no (que no lo sé, pero es lo que he entendido al ir leyendo listas de correo), sino que con aptitude se trabaja de otra manera, marcando primero las acciones a realizar (que pueden ser más de una al mismo tiempo), y luego haciendo la actualización, lo que permite un gran control.
Ventajas de aptitude frente a apt-get
Voy a describir por encima, usando ejemplos donde sea posible, algunas de las situaciones en las que tendríamos un comportamiento mejor usando aptitude, que usando apt-get.
Entiende de sugerencias y recomendaciones
Si instalamos mediante apt-get el paquete cdrecord, tendremos un programa funcionando perfectamente, puesto que instala todas sus dependencias. Sin embargo, la mayor parte de la gente, necesitará para crear las imágenes ISO, el paquete mkisofs. Es por ello, que cdrecord recomienda mkisofs. Al usar apt-get, probablemente veamos una advertencia, pero aptitude puede configurarse para que tenga en cuenta esos paquetes, y los instale como si fueran dependencias, lo que está bastante aconsejado.
Paquetes automáticos, y manuales
Si instalas un paquete de un programa que conozcas (por ejemplo, mozilla), es posible que con él se instalen otros paquetes que tú ni siquiera supieras que existían, como bibliotecas que sean imprescindibles para que funcione este programa, que son sus dependencias (por ejemplo, libnspr, que proporciona código que mozilla necesita para funcionar). Si luego te cansas de mozilla, y lo eliminas, ¿se borran sus dependencias?
Con apt-get no, y hay que recurrir a deborphan, o debfoster, para controlar que con el tiempo, no queden cosas sueltas que no nos interesan por el sistema. Sin embargo, aptitude lo hace de la forma correcta: cuando se instala un paquete, recuerda si el paquete fue instalado manualmente, o automáticamente. Los paquetes instalados manualmente, son los que el usuario ha pedido explícitamente. Los paquetes que se han instalado como dependencias (o sugerencias, o recomendaciones), se borran automáticamente si no tienen dependencias inversas (es decir, si el paquete libnss fue instalado sólo porque mozilla lo necesitaba, será desinstalado cuando mozilla sea desinstalado, y si ningún otro paquete más lo necesita).
Ahí va un ejemplo sencillo.
mozilla-browser con apt-get:
# apt-get install mozilla-browser
Reading Package Lists… Done
Building Dependency Tree… Done
The following extra packages will be installed:
libnspr4
Suggested packages:
xprt-xprintorg
Recommended packages:
mozilla-psm myspell-en-us myspell-dictionary
The following NEW packages will be installed:
libnspr4 mozilla-browser
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 10.4MB of archives.
After unpacking 31.7MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Como ves, apt-get ha avisado de que está recomendado o sugerido instalar algunos paquetes extra, pero a día de hoy (Thu, 21 Oct 2004 19:12:58 +0200), no hay ninguna forma automática de hacer que se instalen.
Ahora nos cansamos de mozilla-broser, y decidimos pasarnos a mozilla-firefox (ey!, es un ejemplo, que ya sé que Konqueror mola mucho más ;-)). Así que empezamos por eliminar el primero:
# apt-get remove mozilla-browser
Reading Package Lists… Done
Building Dependency Tree… Done
The following packages will be REMOVED:
mozilla-browser
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
Need to get 0B of archives.
After unpacking 31.4MB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
¿Qué? ¿Cómo? ¿Y que pasa con los otros paquetes que antes se han instalado automáticamente? (en realidad sólo libnspr4, pero podrían haber sido más) Pues que estarán muertos en nuestro sistema, ya que nadie los utilizará. No se desinstalan automáticamente con apt-get.
Si hubieramos hecho lo mismo con aptitude, la instalación hubiera sido prácticamente igual, pero hubiera marcado a mozilla-browser como un paquete que el usuario ha dicho que quiere (instalado manualmente), y el resto como paquetes que el sistema ha dicho que quiere (instalados automáticamente). Para arreglar eso, podemos usar aptitude. Vamos a marcar esos otros paquetes, como instalados automáticamente:
# aptitude markauto libnspr4
Reading Package Lists… Done
Building Dependency Tree
Reading extended state information
Initializing package states… Done
Reading task descriptions… Done
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B of archives. After unpacking 0B will be used.
Writing extended state information… Done
Reading Package Lists… Done
Building Dependency Tree
Reading extended state information
Initializing package states… Done
Reading task descriptions… Done
Ahora probemos desinstalar, pero usando aptitude:
# aptitude purge mozilla-browser
Reading Package Lists… Done
Building Dependency Tree
Reading extended state information
Initializing package states… Done
Reading task descriptions… Done
The following packages are unused and will be REMOVED:
libnspr4
The following packages will be REMOVED:
mozilla-browser
0 packages upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
Need to get 0B of archives. After unpacking 31.7MB will be freed.
Do you want to continue? [Y/n/?] y
Como ves, ahora se desinstalan ambos. El segundo porque se lo hemos pedido, y el primero porque recuerda que nosotros no lo queríamos en su momento, y sabe que ahora no es necesario (no tiene dependencias inversas).
No sólo es útil para desinstalaciones, sino sobretodo para actualizaciones. Las bibliotecas cambian de soname cuando se hacen determinados cambios, y el paquete cambia de nombre para que puedan haber distintas versiones instaladas. Así mozilla ahora mismo, depende de libnspr4, pero actualizo a una versión de mozilla que depende de libnspr5, libnspr4 será eliminada, ya que ningún paquete más la necesita.
En esta captura de ejemplo se ve como PHP, en la versión instalada depende de ciertos paquetes de SSL, pero puesto que en la nueva no, y son paquetes que yo no pedí instalar, son eliminados al no ser ya necesarios.

Paquetes desconocidos (nuevos u obsoletos)
Cuando aptitude nota que un paquete ahora existe, y antes no sabía nada de él, lo apunta en su lista de paquetes nuevos. Esto puede ser debido a que ha sido subido al archivo de Debian por primera vez, o a que hemos añadido algo al sources.list.
De manera similar ocurre con los paquetes obsoletos, o localmente creados. Si has compilado algún núcleo, y lo tienes instalado usando un paquete generado con kernel-package, lo verás en esta lista.
Retiene paquetes fácilmente
Si hay un paquete que no quieres que se actualice, puedes ponerlo on hold muy fácilmente: en menús con la tecla ‘=’, o en línea de comandos con ‘hold’. También puedes pedirle que no se actualice tan sólo en una versión en concreta.
Usa apt
Si ya tienes configurado a tus necesidades tu /etc/apt/sources.list, o tu apt.conf, etc., no tienes que preocuparte. apt-get tan sólo es un comando que hace de interfaz a libapt, igual que aptitude, por lo que no tienes que configurar nada.
También funciona perfectamente con apt-listbugs o apt-listchanges (paquetes que recomiendo a usuarios de Debian Sid.

Aún las ventajas de apt-get, dselect, tasksel…
aptitude funciona en modo no interactivo, en línea de comandos (o CLI), al igual que apt-get, pero también funciona de una manera mucho más potente en modo interactivo, con una representación en menús de texto (ncurses), al estilo dselect. También lista los paquetes agrupados en tareas (como tasksel), así puedes usar aptitude para que recuerde que tareas quieres instalar.
Tiene un buscaminas
Si estrás detrás de una conexión lenta, y te aburres mientras se instalan paquetes, ¡puedes jugar al buscaminas mientras esperas!
Usar aptitude
Usar aptitude
Mi intención inicial era escribir un artículo que sirviera de tutorial, puesto que cuando yo empecé a usarlo, la documentación era poca. Si has llegado hasta aquí, espero haberte convencido lo suficiente para usarlo ;-), así que te recomiendo que instales el paquete aptitude-doc, que es un manual bastante completo escrito por el propio autor.
Si la impaciencia te corroe, te daré un pequeño avance. Si estás acostumbrado a apt-get, la mayor parte de cosas pueden ser iguales:
aptitude install tal
Instala el paquete tal, y todas sus dependencias (por defecto, también las recomendaciones, que para algo están).
aptitude remove tal
Elimina el paquete tal. Si al eliminar ese paquete, hay otros que ya no son necesarios, también serán eliminados. No te preocupes por eso, aptitude sabe lo que se hace ;-).
aptitude purge tal
Lo mismo que la opción anterior, pero eliminando también los archivos de configuración
aptitude update
Actualiza la lista de paquetes disponibles, en base a lo que diga /etc/apt/sources.list
aptitude upgrade
Actuliza el sistema de forma segura
aptitude dist-upgrade
Actualiza el sistema, eliminando y borrando paquetes que sean necesarios. A pesar de que es lo habitual, en ocasiones puede que queramos actualizar sólo algunos usando ‘upgrade’.
Hay más opciones, pero son menos habituales; las podéis consultar con la ayuda (aptitude -h).
De todas formas, cuando os volváis fans completos de aptitude, es posible que queráis usar la interfaz en ncurses (llamando a aptitude sin más: aptitude). Esta interfaz puede ser confusa al principio, pero es mucho más flexible, ya que podremos trabar de otra manera. Cuando se trabaja en modo GUI, podremos hacer varias operaciones al mismo tiempo. Esto puede ser crucial en actualizaciones.
Podemos ejecutar aptitude una noche (cuando se actualizan los mirrors), navegar por los menús con ‘j’, ‘k’ y ‘enter’, al estilo mutt/vim (también podéis usar los cursores, claro), y descubrir que han sido añadidos paquetes nuevos al archivo (menú “New packages”), y que hay paquetes que pueden ser actualizados (menú “Upgradable packages”). Al navegar por los menús, queremos instalar uno, así que nos colocamos encima de él, y pulsamos ‘+’ (para eliminar es ‘-’, para purgar es ‘_’, y para retener es ‘=’; como ves son fáciles de recordar).
Una vez hemos marcado las acciones que queremos ejecutar, pulsamos ‘g’, y veremos el resumen de lo que aptitude va a hacer, para que podamos ver si nos interesa, o si hay paquetes rotos:

Si estamos contentos con las operaciones a realizar, pulsamos de nuevo ‘g’, y aptitude descargará e instalará / borrará los paquetes necesarios.

Julio 20th, 2007 @ 6:38 pm
hola man
si puedes cambia el link del blog man ya es
http://www.nierox.com
saludos :d
Julio 20th, 2007 @ 6:49 pm
Ay como me caen mal los que creen que linux es el mejor SO. Osea, todo lo que tienen que hacer para instalar un simple programa. En windows simplemento un doble click y ya. Y eso de que sea software libre, por dios, ya por eso lo creen el mejor, cuando en windows existen millones de porgramas libres y gratis y pues en linux el software es limitado. Pues solo les deseo buena suerte con su “super” SO.
Julio 20th, 2007 @ 7:20 pm
nierox ya actualizamos el link. encuanto al siguiente comentario: que edad titnes?
que es lo que entiendes por software libre????
as probado linux? bueno aun no sabes nada de esto amigo, mira que tu eres feliz con tu windows lleno de spywares,virus,y aparte tienes que estar andando con tu antivirus y antispywares, y no conforme con eso no sabes ni que coño hace tu sistema, la informacion que envia a ciertas compañias, etc, hace poco se descubrio que windows vista emitia informacion a microsoft de todo lo que hacen sus usuarios, no dudo que con versiones anteriores como windows XP tambien pase lo mismo, ya que como es un sistema operativo cerrado pues que pueden saber los usuarios que es lo que verdaderamente hace sus sistemas amados windows? ami me da igual lo que piensen yo estoy tranquilo con mi Linux por que se que funciones realiza, tengo acceso al código fuente como todos los usuarios de Linux,no me preocupo por spywares y virus, no me preocupo por si un usuario mal intencionado se quiere meter en mi sistema (eso lo he logrado con tan solo 5 minutos en un winsows xD) o preocupado por si el dia de mañana sale un nuevo exploit para mi sistema ya sea una reverse shell etc….
yo con mi Debian me siento bien y Gracias a Linux hoy duermo como tranquilo.=)
Julio 22nd, 2007 @ 4:23 am
me gusta el pico
Julio 23rd, 2007 @ 12:52 pm
APT es la razón por la que no uso otra cosa que no sea un derivado de Debian, es la leche!
Diciembre 7th, 2007 @ 2:28 pm
No se pero parece que soy el único que utiliza Debian Etch, Aptitude (con Ncurses) en Etch es un “front-end” en modo de texto (similar a midnight commander) con ménus y ayudas (están en ingles) es muy fácil de utilizar. Pero me parece que todos aquí utilizan apt en Basch.
Diciembre 27th, 2007 @ 8:08 pm
apt-get, aptitude, synaptic, que mas da, el caso es la sencillez,
Para el de windows miles de programas libres para windows no querras decir pirateados con spyware integrado y caballos de troya?
en menos de 2 minutos en debian tengo el sofware que necesito para las tareas que se precisen, cuanto tardas tu en buscarlo en internet, descargarlo e instalarlo?
Mi sistema debian tarda menos en instalarse incluso por internet que tu amado windows leyendo desde cd
Comprobado una instalacion con gnome + kde a traves del tasksel que lanza el instalador me ha tardado por internet 45 minutos con una ADSL de 3 megas
mejoralo con tu windows Tuerto
Fe de erratas no es windows Tuerto perdon es windows retuerto XD.
Diciembre 27th, 2007 @ 8:45 pm
Bueno, yo no sé de cuándo será eso pero hoy en día apt-get sí marca como innecesarios los paquetes que ya no se usan y si no miren esto:
rafael@rafadeb:~$ sudo apt-get install boinc-client
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Se instalarán los siguientes paquetes extras:
libcurl3 libssh2-1
Paquetes sugeridos:
boinc-app-seti boinc-manager kboincspy schedtool
Se instalarán los siguientes paquetes NUEVOS:
boinc-client libcurl3 libssh2-1
0 actualizados, 3 se instalarán, 0 para eliminar y 1 no actualizados.
Necesito descargar 670kB de archivos.
Se utilizarán 1610kB de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]?
Des:1 http://ftp.fr.debian.org lenny/main libssh2-1 0.18-1 [64,3kB]
Des:2 http://ftp.fr.debian.org lenny/main libcurl3 7.17.1-1 [202kB]
Des:3 http://ftp.fr.debian.org lenny/main boinc-client 5.10.30-1 [404kB]
Descargados 670kB en 2s (231kB/s)
Preconfigurando paquetes …
Seleccionando el paquete libssh2-1 previamente no seleccionado.
(Leyendo la base de datos …
110706 ficheros y directorios instalados actualmente.)
Desempaquetando libssh2-1 (de …/libssh2-1_0.18-1_i386.deb) …
Seleccionando el paquete libcurl3 previamente no seleccionado.
Desempaquetando libcurl3 (de …/libcurl3_7.17.1-1_i386.deb) …
Seleccionando el paquete boinc-client previamente no seleccionado.
Desempaquetando boinc-client (de …/boinc-client_5.10.30-1_i386.deb) …
Configurando libssh2-1 (0.18-1) …
Configurando libcurl3 (7.17.1-1) …
Configurando boinc-client (5.10.30-1) …
* Starting BOINC core client: boinc_client [ ok ]
* Setting up scheduling for BOINC core client and children: [ ok ]
rafael@rafadeb:~$ sudo apt-get remove boinc-client
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Se instalaron de forma automática los siguientes paquetes y ya no son necesarios.
libcurl3 libssh2-1
Utilice «apt-get autoremove» para eliminarlos.
Los siguientes paquetes se ELIMINARÁN:
boinc-client
0 actualizados, 0 se instalarán, 1 para eliminar y 1 no actualizados.
Necesito descargar 0B de archivos.
Se liberarán 1024kB después de desempaquetar.
¿Desea continuar [S/n]?
Diciembre 27th, 2007 @ 9:20 pm
Un pequeño apunte:
El título del artículo debería ser DIFERENCIA ENTRE APTITUDE Y APT-GET
¡Saludos!
Diciembre 29th, 2007 @ 3:49 am
Talibanismos aparte (tanto de uno como de otro lado), de justos es reconocer que, hoy por hoy, Windows tiene más cosas fáciles que GNU/Linux. Pero la instalación de software hace tiempo que dejó de ser una de ellas: concretamente desde que Debian desarrolló APT-GET. Baste comparar, paso por paso, la instalación de los codecs XviD en uno y otro sistema, para notar la enorme diferencia a favor de APT-GET.
Ojo, antes del famoso “doble click” en Windows se ha tenido que hacer una búsqueda y navegación por determinadas páginas. Eso también cuenta.