25 febrero 2010

Diferencia entre aptitude y apt-get

El uso de apt-get es un buen método para instalar software en tu sistema. Tras probar alguna de las distros tipo Debian, como Ubuntu, aprendes algunos de sus usos y herramientas relacionadas:
-- apt-get: Instala y elimina paquetes en tu sistema, también permita actualizar las listas de paquetes o el propio software.


-- apt-cache: Busca paquetes en la lista de paquetes mantenida por apt en el sistema local.
-- dpkg- Se usa para varias tareas administrativas del sistema, como reconfigurar Xorg.

Probablemente esas sean las primeras herramientas relacionadas con apt que aprendiste a usar en una distro tipo Debian. Pero esto no es más que el principio. Necesitarás aprender y recordar otras herramientas si vas a administrar más a fondo tu sistema. Estas incluyen:

* apt-listbugs: Muestra los bugs/errores conocidos de un paquete de software antes de instalarlo.
* apt-listchanges: Igual que apt-listbugs, pero muestra cambios no relacionados con los errores/bugs.
* apt-rdepends: Herramienta para ver los árboles de dependencias de los paquetes.
* deborphan- Busca dependencias que han quedado huérfanas tras eliminar del sistema los paquetes que las necesitaban.
* debfoster- Ayuda a deborphan a identificar qué dependencias no se necesitan más en tu sistema.
* dselect- Interfaz curses para ver, seleccionar y buscar paquetes en tu sistema.

Pero aún hay más: apt-cdrom, apt-config, apt-extracttemplates, apt-ftparchive, apt-key, apt-mark y apt-sortpkgs.

Por si no llevas la cuenta, son 16 herramientas diferentes. No sé qué piensen, pero a mí no me parece una forma muy correcta de hacer las cosas. Quiero decir, si decido usar OpenSSH, por ejemplo, salvo en el caso de scp, toda la functionalidad de OpenSSH es realizada por una herramienta: ssh. ¿No estaría bien tener lo mismo para el caso que nos ocupa: tener toda la functionalidad de apt en una sola herramienta llamada ‘apt’?

Más aún, apt-get tiene un gran problema (que sólo recientemente ha comenzado a solucionarse) a la hora de eliminar paquetes: apt-get trabaja muy bien identificando qué dependencias necesitan ser instaladas para que funcione un paquete determinado, pero falla miserablemente a la hora de eliminar dicho paquete. ‘apt-get remove’ elimina los paquetes indicados, pero deja sus dependencias, aunque éstas queden huérfanas (ningún paquete de tu sistema las necesita). ¿Cuál puede ser la solución? Aptitude.

Antes de continuar, he de decir que sí, que estoy al corriente de que ‘apt-get autoremove’ finalmente puede encargarse de las dependencias huérfanas. Es un paso en la buena dirección, por supuesto. Sin embargo, apt-get, junto a sus herramientas hermanas, es un buen método para las tareas mencionadas, si estás dispuesto a aprender 16 herramientas diferentes. Aptitude, como verás ahora, reune todas en una. Por otra parte, la opción ‘autoremove’ sólo está en las versiones más recientes de apt-get (en el caso de Ubuntu, la tienes a partir de Edgy (6.10)).

Aptitude es una herramienta mejor para instalar, eliminar, actualizar, y administrar de otras formas los paquetes en tu sistema que apt. Para empezar, desde sus comienzos, aptitude ha sido capaz de resolver el problema de las dependencias huérfanas. En 2º lugar, tiene una interfaz basada en curses que supera totalmente a la de dselect. Finalmente, y no menos importante, usa una sola herramienta con muchas funciones. Veamos:

* aptitude: Al ejecutarlo sin argumentos muestra una interfaz para buscar, navegar, instalar, actualizar y realizar otras tareas de administración de paquetes.
* aptitude install: Instala software en tu sistema, junto con las dependencias necesarias.
* aptitude remove: Elimina paquetes junto con las dependencias que queden huérfanas.
* aptitude purge: Elimina paquetes y dependencias huérfanas junto con los ficheros de configuración.
* aptitude search: Busca paquetes en las listas de paquetes locales de apt.
* aptitude update: Actualiza las listas de paquetes locales.
* aptitude upgrade: Actualiza los paquetes disponibles.
* aptitude clean: Elimina los ficheros que fué necesario descargar para instalar software en tu sistema.
* aptitude dist-upgrade: Actualiza paquetes, incluso si eso significa que debe desinstalar otros.
* aptitude show: Muestra detalles acerca del paquete nombrado.
* aptitude autoclean: Elimina los paquetes deb obsoletos.
* aptitude hold: Fuerza a que un paquete permanezca en su versión actual, y no se actualice.

¿Ves algún patrón aquí? Un sólo comando con diferentes opciones legibles. Y esto es sólo la punta del iceberg, hay muchas otras ventajas. Por ejemplo, al buscar un paquete con aptitude, los resultados aparecen ordenados alfabéticamente y justificados por columnas; también te dirá cuales están instalados en tu sistema, en lugar de darte un listado de paquetes en un formato desordenado e ilegible, como hace apt-cache.

Ya lo he mencionado, pero insisto en que al ejecutar aptitude sin ninguna opción hará que aparezca una interfaz curses para navegar por el sistema apt. Los que la hayais usado, sabreis que es de lejos superior a dselect. Aptitude facilita mucho la búsqueda paquetes, actualizarlos, eliminarlos, obtener detalles y otras tareas necesarias. Pasa un par de minutos en la consola, probando ambas aplicaciones, y verás que Aptitude está bastante mejor que dselect, la cual te hará sentir como si estuvieras perdido en un laberinto.
Fuente

3 comentarios:

sofazen dijo...

Qué buen punto de referencia.
Gracias

klapifoch dijo...

muy buen post! felicidades! y saludos desde Nicaragua!

Anónimo dijo...

Muy buena info, aunque seguiré necesitando apt-file para buscar dependencias que faltan al compilar, ;)