apt vs aptitude
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:
- aptitude versus apt-get
- The Debian package management tools
- man apt-get
- man aptitude
Leave a Comment