apt vs aptitude


Debina logo 2D

Tanto apt (apt-get, apt-cache) como aptitude son comandos para la administración de paquetes desde la consola de texto en Debian y distribuciones derivadas como Ubuntu.  De hecho, ambos consultan los repositorios según el archivo /etc/apt/sources.list y usan los paquetes obtenidos desde dichos repositorios. Pero aún mucha gente sigue usando apt-get para instalar los paquetes siendo aptitude la mejor opción.  Inclusive, si buscamos en tutoriales o manuales en Internet podremos fijarnos que la mayoría de ellos hacen mención casi exclusivamente a apt-get y no a aptitude.

Quizás esto último se deba a que apt-get fue primero y la gente se acostumbró a usarlo. Por ejemplo, el otro día hablando con un amigo le comento que se cambie a aptitude ya que es mejor que apt-get, y la respuesta que me dio fue algo como: “mmm…yo no tengo problemas con apt. Además, si apt-get aún sirve para qué usar aptitude?”. Bien, veamos el por qué :

Las dependencias

La respuesta es que aptitude tiene mejor resolución de dependencias de paquetes que apt-get.  De hecho al momento de instalar un paquete que genera conflictos, aptitude sugiere soluciones a esos conflictos, mientras que apt-get no. Por otro lado,  apt-get no remueve las dependencias de paquetes no utilizados mientras que aptitude si.  En el siguiente ejemplo instalaremos y desinstalaremos el paquete junior-games-card con apt-get y luego con aptitude para demostrarlo:

apt

Empezamos a instalar con apt-get:

arthur:~# apt-get install junior-games-card
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
ace-of-penguins blt cdd-common junior-config junior-tasks pysol python-tk python2.4
python2.4-minimal tcl8.4 tk8.4
Suggested packages:
blt-demo cdd-doc pysol-cardsets python-tk-dbg tix python2.4-doc python-profiler
binfmt-support tclreadline
The following NEW packages will be installed:
ace-of-penguins blt cdd-common junior-config junior-games-card junior-tasks pysol python-tk
python2.4 python2.4-minimal tcl8.4 tk8.4

0 upgraded, 12 newly installed, 0 to remove and 23 not upgraded.
Need to get 9363kB of archives.
After this operation, 30.9MB of additional disk space will be used.
Do you want to continue [Y/n]?

Ahora vamos a desinstalar:

arthur:~# apt-get remove junior-games-card
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following packages were automatically installed and are no longer required:
pysol python2.4-minimal python2.4 junior-tasks blt python-tk junior-config tcl8.4 tk8.4
ace-of-penguins cdd-common
Use ‘apt-get autoremove’ to remove them.

The following packages will be REMOVED:
junior-games-card

0 upgraded, 0 newly installed, 1 to remove and 23 not upgraded.
After this operation, 61.4kB disk space will be freed.
Do you want to continue [Y/n]

Malo, malo…solo desinstala junior-games-card y no sus dependencias (cosa que debería hacer porque ningún otro paquete las están utilizando).  Coloqué en rojo el mensaje de advertencia de apt-get  que indica que si se quiere eliminar las dependencias hay que usar la opción ‘autoremove’, la cual estoy casi que seguro que nadie usa o conoce de su existencia.

aptitude

Ahora el turno de aptitude:

arthur:~# aptitude install junior-games-card
Reading package lists… Done
Building dependency tree
Reading state information… Done
Reading extended state information
Initializing package states… Done
Reading task descriptions… Done
The following NEW packages will be installed:
ace-of-penguins{a} blt{a} cdd-common{a} junior-config{a} junior-games-card junior-tasks{a}
pysol{a} python-tk{a} python2.4{a} python2.4-minimal{a} tcl8.4{a} tk8.4{a}

0 packages upgraded, 12 newly installed, 0 to remove and 23 not upgraded.
Need to get 9363kB of archives. After unpacking 30.9MB will be used.
Do you want to continue? [Y/n/?]

Ahora vamos a desinstalar:

arthur:~# aptitude remove junior-games-card
Reading package lists… Done
Building dependency tree
Reading state information… Done
Reading extended state information
Initializing package states… Done
Reading task descriptions… Done
The following packages will be REMOVED:
ace-of-penguins{u} blt{u} cdd-common{u} junior-config{u} junior-games-card junior-tasks{u}
pysol{u} python-tk{u} python2.4{u} python2.4-minimal{u} tcl8.4{u} tk8.4{u}
0 packages upgraded, 0 newly installed, 12 to remove and 23 not upgraded.

Need to get 0B of archives. After unpacking 30.9MB will be freed.
Do you want to continue? [Y/n/?]

Queda en evidencia cual es más eficiente: aptitude.

Usando apt vs. aptitude

Pero no solamente tenemos el problema de las dependencias. Resulta que usar apt es más “complejo” que usar aptitude, ya que hay que recordar las combinaciones de órdenes y opciones, mientras que con aptitude solo hay que recordar las opciones. Veamos esto:

apt

Orden Opción Nombre de paquete Descripción
apt-get update Obtiene la lista de paquetes desde el repositorio
apt-get install junior-games-card Instala el paquete junior-games-card
apt-cache search junior-games-card Busca el paquete junior-games-card
apt-get upgrade junior-games-card Actualiza el paquete junior-games-card
apt-cache show junior-games-card Muestra la descripción del paquete junior-games-card
apt-get remove junior-games-card Desinstala el paquete junior-games-card , pero deja sus archivos de configuración
apt-get remove –purge junior-games-card Desinstala el paquete  junior-games-card junto con sus archivos de configuración

aptitude

Orden Opción Nombre de paquete Descripción
aptitude update Obtiene la lista de paquetes desde el repositorio
install junior-games-card Instala el paquete junior-games-card
search junior-games-card Busca el paquete junior-games-card
upgrade junior-games-card Actualiza el paquete junior-games-card
show junior-games-card Muestra la descripción del paquete junior-games-card
remove junior-games-card Desinstala el paquetejunior-games-card , pero deja sus archivos de configuración
purge junior-games-card Desinstala el paquete  junior-games-card junto con sus archivos de configuración

Aquí vemos que aptitude es más fácil de aprender y usar !

¿Quieres más?

Aun no estás convencido de que aptitude es lo mejor que puedes usar, mira de lo que te pierdes si no utilizas aptitude :

  • Ofrece acceso a todas las versiones de los paquetes
  • Lleva un registro de las acciones que ejecuta en la bitácora /var/log/aptitude
  • Muestra la salida de las búsquedas de paquetes más ordenada y útil que apt-cache  (además que solo busca en los nombre de paquetes)
  • Puede instalar de forma automática paquetes recomendados (ver opción -r en el manual)
  • Puede instalar tareas predefinidas (ver man tasksel)

Referencias:


,

  1. #1 by Luis Gallardo on 19/01/2010 - 10:28

    @Devoto Siempre y cuando no los mezcles, ya que aptitude tiene no una sino múltiples soluciones de resolución de dependencias, mientras que apt-get no, por lo que se volverá todo un desastre a la larga. Si tu máquina es de bajos recursos, quizás puedas economizar en otros recursos como el ambiente gráfico o el exceso de ttys que no usas, así seguirás usando aptitude :)

    PD: Te corregí la palabra como pediste en el mensaje. Saludos!!

  2. #2 by Devoto on 18/01/2010 - 8:33

    Si bien aptitude es una excelente interfaz de apt, nada impide usar ambos. En un ordenador de pocos recursos (256Mb) la rapidez y simpleza me recompensa a apt.

    Saludos

  3. #3 by Luis Gallardo on 14/01/2010 - 9:47

    Franco, no hay razones técnicas para seguir usando apt-get, sino más bien de ” flojera” como menciona tú, pero flojera de aprender algo nuevo , mejor y más sencillo. Por otro lado, aptitude es la herramienta preferida en Debian como puedes encontrar en su documentación:

    Note that aptitude is the preferred program for package management from console both for package installations and package or system upgrades.

    Sacado de http://www.debian.org/doc/FAQ/ch-pkgtools.en.html

    PD: Tienes que dar argumentos para decir que algo es mejor que otra cosa, no solo “creer”que apt-get es mejor que aptitude.

  4. #4 by Franco on 14/01/2010 - 9:28

    Tenes toda la razon, aptitude es mas avanzado, pero tambien es cierto que apt-get es mas rapido, sus comandos son simples y si bien es cierto que no tiene una interfaz, creo que esa es su mayor ventaja.

    Ademas en el ejemplo mencionas el comando autoremove. El mismo APT te lo me menciona, asi que sino se lo usa es mas cuestion de vagancia que otra cosa jajaja

    En sintesis, no creo que apt- tenga mucho que envidiarle a aptitude

  5. #5 by phill on 23/11/2009 - 12:15

    Muy buena explicacion…

(No será publicado)