Gestor de paquetes aptitude

Gestor de paquetes aptitude
Antes de comenzar con este artículo me parece importante dejar en claro que los Gestores de paquetes utilizados en Debian, y toda su familia de distribuciones, son una interfaz para APT «Advanced Packaging Tool» (Herramienta Avanzada de Empaquetado) desarrollado y mantenido por Debian.
Conteniendo interfaces en modo texto o comúnmente denominadas como CLI «command-line interface» (Interfaz de linea de comando) entre las que se encuentran apt-get, apt y aptitude. Aunque también las encontramos en modo gráfico llamadas GUI cuyas siglas en inglés significan «graphical user interface» (Interfaz gráfica de usuario) entre las que se encuentran aptitude(GUI), synaptic, entre otros.
En este artículo nos ocuparemos de desarrollar una guía completa sobre el gestor de paquetes aptitude como interfaz de APT. Este se encuentra en modo texto, osea desde la interfaz de lineas de comando CLI.
Aptitude
El gestor de paquetes aptitude es un FrontEnd basado en Ncurses para APT. Debido a que su interfaz está basada en modo texto puede ejecutarse desde una terminal.
Pero también permite llevar adelante la gestión de paquetes desde nuestro emulador terminal utilizando la interfaz de lineas de comandos o CLI (command line interface), método que se utilizará como objetivo de desarrollo para esta entrada.
La primera edición pública de aptitude fue la versión 0.0.1, del 18 de noviembre de 1999. Se trataba de una versión con muchas limitaciones: era capaz de mostrar la lista de paquetes disponibles, pero incapaz de descargarlos o instalarlos. Para la versión 0.0.4, esta posibilidad ya estaba integrada, así como otras muchas mejoras. Se incluyó en la versión 2.2 de Debian potato.
La versión de aptitude sobre la que se va a desarrollar este articulo es la siguiente:
Nota: Tenga en cuenta la versión, ya que su sintaxis podría ser modificada en futuras actualizaciones.
Ncurses
Como un extra, me gustaría dejar una referencia sobre ncurses. Es una biblioteca de programación que proporciona una API, lo que permite al programador escribir interfaces de usuario basadas en texto de manera independiente del terminal. También optimiza los cambios de pantalla, para reducir la latencia experimentada cuando se utiliza el shell de Unix remoto.
Ncurses significa nuevas maldiciones, y es un reemplazo para las maldiciones clásicas 4.4BSD descontinuadas. Ncurses es parte del proyecto GNU. Es uno de los pocos archivos GNU no distribuidos bajo la Licencia Pública General de GNU o la Licencia Pública General Menor de GNU; se distribuye bajo una licencia como la licencia X11, que a veces se conoce como la licencia MIT.
Instalación del gestor de paquetes aptitude
En muchas casos y según la distribución que estés utilizando, el gestor de paquetes aptitude puede o no venir instalado en el sistema operativo por defecto. En el caso de que no cuentes con este gestor de paquetes instalado, podemos lleva a cabo su instalación bajo la siguiente linea de comando:
sudo apt-get install aptitude
Confirmamos y al terminar la operación, ya contaremos con aptitude en nuestro sistema.
Sintaxis del gestor de paquetes aptitude
El gestor de paquetes aptitude se corresponde con la siguiente sintaxis:
sudo aptitude [opciones] [paquetes]
Manual aptitude
Para el desarrollo de este artículo haremos uso del manual disponible en nuestro para el gestor de paquetes aptitude. (La intención de este paso adicional es fomentar el uso del manual, para que aprendamos a movernos de forma independiente en nuestro sistema y a manejarnos con las documentaciones que los desarrolladores ponen a nuestra disposición). Para invocarlo ejecutamos:
man aptitude
Sincronizar la base de datos local de paquete con la base de datos de paquetes de los repositorios
La sincronización de la base de datos de paquetes de los repositorios con la de nuestro sistema es fundamentas para garantizar la disponibilidad de nuevas versiones de estos disponibles o dicho de otra forma, versiones de software desactualizadas en nuestro sistema.
Ejecutado con permisos elevados, el comando aptitude seguido de parámetro update sincroniza la base de datos de los repositorios que tenemos configurados en el fichero /etc/apt/sources.list
, con la base de datos de paquetes local. Esta acción actualiza y compara amabas bases de datos para que en el caso de que corresponda, anunciarnos la disponibilidad de nuevas versiones disponibles de los paquetes que tenemos instalados.
Es necesario señalar que siempre que necesitemos realizar una tarea de gestión de paquetes, amabas bases de datos deben estar sincronizadas previamente. Si bien no es una obligación hacerlo, podría evitarte errores. Dejando esto en claro, ejecutemos:
sudo aptitude update
Luego de esta ejecución dispondremos de las bases de datos de paquetes local sincronizada con la de los repositorios. Un detalle comparativo con el gestore de paquete apt para APT que me gustaría señalar en esta instancia, es que aptitude no nos muestra si hay paquetes por actualizar, ni cuantos. Al igual que si utilizamos apt-get.
Gestión de paquetes
Si bien cualquier tarea que realicemos con paquetes puede considerare como gestión, las principales son aquellas que realizan modificaciones sobre estos. Veamos a continuación cada una de ellas.
Actualización de paquetes
Una vez sincronizados los repositorios, aptitude no ofrece el parámetro upgrade para llevar a cabo la tarea de comprobación de paquetes a actualizar y actualización de los mismos. Ejecutemos.
sudo aptitude upgrade
Donde se nos imprimirá la información sobre los procesos que se llevaran a cabo en la ejecución. Podemos identificar en tres cuerpos informativos, veamos uno a uno para comprender la interfaz.
Paquetes a actualizar
Se titula como «Se actualizaran los siguientes paquetes«, y nos lista todos los paquetes que van a ser actualizados en el momento de la petición. En el ejemplo que estamos viendo, se ve de la siguiente forma:
Paquetes recomendados
Se titula como «Se RECOMIENDAN los siguientes paquetes, pero NO se instalarán«, y nos listara los paquetes que se nos recomiendan para añadir alguna función o como dependencias de otros paquetes. Estos NO se instalaran junto con la actualización, ya que son solo una recomendación, pero si buscamos información sobre estos y creemos que pueden resultarnos útiles, tendríamos que instalarlos en otra instancia.
Mas adelante veremos como instalar paquetes y como obtener información de un paquete. En el ejemplo anterior vemos que nos recomienda el paquete gnome-user-docs.
Información cuantitativa
En el ultimo cuerpo de la interfaz de actualización del gestor de paquetes aptitude, observamos la información cuantitativa de proceso que se esta por llevar a cabo, donde visualizaremos:
- Actualizar
- Ser instalados
- Seran eliminados
- Quedar sin actualizar (Esto puede deberse a incumplimiento de dependencias)
También observamos el tamaño de la descarga para la actualización de los paquetes antes listados y cuanto van a ocupar o desocupar estos una vez desempaquetados. En el ejemplo se ve de la siguiente manera:
Donde vemos que se van a actualizar 106 paquetes, la descarga de esos 106 paquetes es de 84.1MB y después de desempaquetados, estos van a liberar 1.883KB de espacio de almacenamiento.
Confirmación del proceso de actualización
Una vez comprendimos toda la información que el gestor de paquetes aptitude nos imprime previo a actualizar toda nuestra paquetería, y visualicemos que todo este en orden, confirmamos la actualización y dará comienzo al proceso.
Etapas de actualización
El procesos de actualización se divide en 4 etapas, veamos y describamos a continuación cada una de ellas.
Descarga de los paquetes a actualizar
Se descargar uno a uno los paquetes que estaban disponibles para actualizar. Durante este proceso podremos ver de que repositorio provienen, para que tipo de arquitectura, el nombre del paquete, su versión y el tamaño del paquete.
Nota: Estos paquetes son descargados y conservados en a la memoria cache de APT, ubicada en /var/cache/apt/archives
, mas adelante aprenderemos a hacer una limpieza de este directorio.
Desempaquetado y sustitución (instalación)
Una vez descargados todos los paquetes listados, aptitude comienza a desempaquetarlos sustituyendo la versión anterior de los paquetes por la nueva, para cada caso se nos informa cual sera desempaquetado y sobre que versión anterior se instalara este.
Configuración de los paquetes nuevos
En esta etapa de la instalación el gestor de paquetes aptitude configura los paquetes nuevos para su correcto funcionamiento.
Resultado
Por ultimo aptitude cierra el proceso con un informe de la tarea realizada. Si toda salio bien nos indicara que todos los paquetes fueron actualizados.
Léase como: 0 paquetes por actualizar, fueron actualizados 106.
Instalación de paquetes con aptitude
Para instalar un paquete con aptitude utilizaremos la opción install, siendo esta opción las que nos permite ejecutar instalaciones de software con este gestor en nuestro sistema.
Instalar un paquete con el gestor de paquetes aptitude
Para llevar a cabo la instalación de un paquete de software y todos los paquetes de los que depende para su correcto funcionamiento, mejor conocidos como dependencias, desde un repositorio, hacemos uso de la siguiente sintaxis:
sudo aptitude install paquete
Es necesario señalar que debemos conocer el nombre exacto del paquete que vamos a instalar, sino aptitude no lo encontrará. Para este ejemplo haremos uso del paquete nmap, ejecutemos:
sudo aptitude install nmap
La interfaz de aptitude para la instalación nos muestra dos cuerpos:
Paquetes que se van a instalar
Nos indica los paquetes que van a ser instalados, como podemos observar solo solicitamos instalar nmap, pero éste para su correcto funcionamiento depende de otros paquetes, las dependencias que no se encuentren en nuestro sistema, aptitude las instalará de forma automática, listándolas junto al paquete solicitado para su instalación. En este caso las dependencias necesarias son: liblinear3 y nmap-common
Información cuantitativa
En este apartado de la interfaz se nos indicaran el numero de paquetes que:
- Actualizar
- Ser instalados
- Seran eliminados
- Quedar sin actualizar
Indicándonos el tamaño de la descarga de estos paquetes y el espacio que van a ocupar una vez instalados.
Instalación
Si estamos de acuerdo con la información que aptitude nos brinda, confirmamos la instalación
El proceso de instalación de un paquete es el mismo que se lleva a cabo en el proceso de instalación.
- Descarga
- Desempaquetado
- Configuración
Instalar un conjunto de paquetes con el gestor de paquetes aptitude
La interfaz de aptitude nos permite realizar, también, la instalación de varios paquetes simultáneamente. Estos se instalaran automáticamente junto a sus correspondientes dependencias si es necesario.
sudo aptitude install paquete1 paquete2 paquete3
Para este ejemplo utilizaremos 3 paquetes, nmap que es una potente herramienta muy utilizada en pentesting, ranger que es un gestor de archivos para consola y elinks que es un navegador web, también para consola de comandos.
Para instalarlos simultáneamente ejecutamos:
sudo aptitude install nmap ranger elinks
Donde visualizaremos en la información previa a la instalación la lista de paquetes y dependencias que se van a instalar y posterior mente la información cuantitativa que el proceso va a llevar: como la cantidad de paquetes, el total que se va a descargar y el espacio que estos van a ocupar una vez instalados todos los paquetes.
Una vez confirmado, estos se instalaran siguiendo e informado el proceso:
- Descargar
- Desempaquetado
- Configuración
Reinstalar un paquete con aptitude
En algunas ocasiones, reinstalar un paquete puede sernos de mucha ayuda. Recurrimos a esta opción cuando queremos reemplazar un archivo de configuración de un paquete especifico que fue manipulado, erróneamente o no. Pero también cuando queremos reparar algún paquete que se encuentra dañado.
La reinstalación, vuelve a instalar el paquete indicado, sustituyendo los archivos de configuración que a este pertenecen. El parámetro utilizado para realizar esta acción es reintall y aptitude lo interpreta bajo la siguiente sintaxis.
sudo aptitude reinstall [paquete]
Para recurrir a este ejemplo utilizaremos el paquete elinks, donde para llevar a cabo su reinstalación ejecutamos:
sudo aptitude reinstall elinks
Si observamos en la interfaz de aptitude se nos indica que no se realizara ninguna descarga (Necesito descargar 0B), esto se debe a que el paquete elinks se encuentra alojado en la cache local de APT desde su anterior instalación, empaquetado. De haber limpiado la cache, aptitude optaría por su descarga. Menciono esto, para que podamos ir entendiendo como es que trabajan los gestores de paquetes y los optimizados que estos están.
En este caso, como no hay descarga, el proceso de instalación consta de dos etapas:
- Desempaquetado
- Configuración
Eliminación de paquetes con aptitude
El gestor de paquetes aptitude cuenta en su sintaxis con la posibilidad de eliminar paquetes, para ello nos provee la opción remove la que indicara a aptitude que estamos queriendo quitar un paquete de nuestro sistema. Veamos como utilizarla.
Eliminar un paquete con el gestor de paquetes aptitude
Para quitar, desinstala, eliminar un paquete, haremos uso de la opción remove donde posteriormente indicaremos el paquete que queremos que ya no forme parte de nuestro sistema. La sintaxis de aptitude bajo esta opción se corresponde de la siguiente manera.
sudo aptitude remove [paquete]
Para este ejemplo vamos a utilizar el paquete ranger.
sudo aptitude remove ranger
La interfaz de aptitude nos imprime la siguiente información previa a la eliminación
Paquetes que se van a eliminar
Nos indica los paquetes que van a ser eliminados, el el caso de que éste tenga dependencias que no satisfagan a ningún otro paquetes, serán seleccionadas para ser eliminadas junto al software en cuestión de forma automática por aptitude.
Información cuantitativa
En este apartado de la interfaz se nos indicaran el numero de paquetes que van a:
- Actualizar
- Ser instalados
- Seran eliminados
- Quedar sin actualizar
Indicándonos el tamaño de la descarga, que en el proceso de supresión de paquetes es 0KB y el espacio que van a ser liberado tras la eliminación.
Proceso de eliminación
Nos imprime una a una las instancias de la supresión del paquete. Entre las que podríamos observar la eliminación del manual, el acceso directo del paquete ubicado en el menú, etc.
Eliminar un un conjunto de paquetes con el gestor de paquetes aptitude
Del mismo modo en que eliminamos un paquete del sistema, es posible desinstalar varios paquetes a la vez, para ello utilizaremos la misma sintaxis e indicaremos uno seguido de otro los paquetes que queremos quitar. Veamos.
sudo aptitude remove paquete1 paquete2 paquete3
Para este ejemplo eliminaremos los paquetes nmap y elinks simultáneamente.
sudo aptitude remove nmap elinks
Paquetes que se van a eliminar
Nos indica los paquetes que van a ser eliminados, en este caso los paquetes dejarían dependencias que no están siendo utilizadas por otros paquetes, por lo que serán seleccionadas para ser eliminadas automáticamente junto al software que estamos solicitando quitar.
Información cuantitativa
En este apartado de la interfaz se nos indicaran el numero de paquetes que van a:
- Actualizar
- Ser instalados
- Serán eliminados
- Quedar sin actualizar
Indicándonos el tamaño de la descarga, que en el proceso de supresión de paquetes es 0KB y el espacio que van a ser liberado tras la eliminación.
Proceso de eliminación
Una vez confirmado suprimirá todos los paquetes indicados junto a sus dependencias.
Nos imprime, una a una, las instancias del proceso de desinstalación de lo paquetes.
Eliminar por completo uno o un conjunto de paquetes
Cuando instalamos un paquete este lo hace junto a sus dependencias y crea sus respectivos ficheros de configuración para su correcto funcionamiento.
Si un paquete es eliminado bajo la opción remove, se eliminaran solo el paquete y sus dependencias, dejando en nuestro sistema tanto el paquete descargado como sus ficheros de configuración.
Para eliminar por completo un paquete sin dejar rastros, contamos con la opción purge, que se encargara de eliminar el paquete principal, sus dependencias, sus ficheros de configuración y el paquete de instalación que se descargo desde los repositorios.
La sintaxis es la siguiente:
sudo aptitude purge paquete
Para este ejemplo, utilizaremos el paquete nmap.
sudo aptitude purge nmap
Al igual que en los anteriores procesos de gestión, la interfaz nos muestra la información sobre la petición solicitada, para no ser repetitivo nombrando los campos de la interfaz, te invito a leerlos y a identificarlos.
De esta forma el paquete sera eliminado por completo, como lo mencionamos anterior mente, confirmamos y la acción se llevar a cabo.
Búsqueda de paquetes con aptitude
En muchas ocasiones podemos necesitar buscar en los repositorios la disponibilidad de algún paquete, aptitude cuenta para realizar búsquedas, con la opción search, quien busca paquetes en los repositorios que coincidan con uno de los patrones introducidos en la línea de órdenes.
Se mostrarían todos los paquetes que coincidan con cualquier patrón que sea indicado. Mientras más preciso sea el criterio de búsqueda, mas preciso será el resultado de la búsqueda. Se corresponde con la siguiente sintaxis:
aptitude search [critério]
Para este ejemplo, buscaremos en paquete gimp que es un programa de edición de imágenes digitales en forma de mapa de bits, desde los repositorios.
aptitude search gimp
En su interfaz, se nos muestra una lista de coincidencias junto a una breve descripción de cada una de éstas. Donde en la primera columna podemos observar una letras, estas nos indican:
- i – Paquete instalado
- c – Archivo de configuración
- v – Nombre de paquete virtual
- p – Paquete nunca instalado o que fueron purgados y que están disponibles para su instalación
- A – Paquete instalado de forma automática
Obtener información de un paquetes con aptitude
El gestor de paquetes aptitude dispone de la opción show para obtener información detallada de un algún software alojado en los repositorios. Esta información esta disponible en la metadata del paquete y se corresponde con la siguiente sintaxis:
aptitude show paquete
Para este ejemplo, utilizare el paquete gimp nuevamente, para que se tenga en comparativa entre la búsqueda de información de un paquete, como es este caso, y la búsqueda por criterio dentro de los repositorios como es el caso de search.
aptitude show gimp
Como podemos observar, show, nos brinda información muy detallada sobre un paquete. A continuación haré una breve descripción sobre los campos mas relevantes, aunque están muy claros, nunca esta de más.
- Paquete: Proporciona el nombre del paquete
- versión: Indica la ultima versión disponible del paquete en repositorios
- Estado: No dice si el software en cuestión esta instalado o no
- Instalado automáticamente: Nos dice si fue instalado automáticamente junto al sistema o a algún otro paquete
- Prioridad: Muestra la prioridad de ejecución del paquete
- Sección: Señala la categoría a la que pertenece el programa (En este caso, gráficos)
- Desarrollador: Brinda el nombre del el/la entidad encargado del desarrollo y mantenimiento del paquete
- Tamaño sin comprimir: Nos enseña el tamaño del paquete descomprimido sin sus dependencias
- Depende de: Nos lista los paquetes de los que depende para su correcto funcionamiento
- Recomienda: Lista los paquete recomendados para añadir funcionalidades extras al paquete
- Sugiere: Nos lista paquetes extras que también podrían ser de utilidad para añadir funciones
- Descripción: Nos brinda una descripción completa del paquete
- Pagina principal: Indica el sitio web del proyecto
Limpiar la cache de paquetes
Cuando instalamos paquetes, estos necesitan ser descargados en primera instancia previo a su instalación. La descargas de paquetes se hacen en el directorio /var/cache/apt/archives
y aun después de ser instalados estos quedan alojados allí incluso para todas las versiones de un mismo paquete.
Podemos observar el tamaño que la cache de apt esta ocupando bajo la siguiente linea de comando:
sudo du -sh /var/cache/apt/archives
En mi caso…
Si nunca limpiaste la cache de APT posiblemente el tamaños sea mas grande. En mi caso la limpio con regularidad, por ello solo ocupa 88M, pero veamos como vaciarla.
Limpiar de la cache, las versiones de paquetes anteriores a la ultima
Para realizar esta tarea usaremos el parámetro autoclean, quien eliminara todas las versiones antiguas de paquetes descargados de la cache de APT. Dejando las descargas de las ultimas versiones. Para ello y según la sintaxis ejecutamos:
sudo aptitude autoclean
En mi caso no hay nada que eliminar, como mencione anteriormente suele limpiar las cache de APT con regularidad, si volvemos a consultar el tamaño, veremos que este se mantiene.
Limpiar cache de paquetes por completo
Si quisiéramos eliminar por completo la cache de APT, en su sintaxis esta herramienta nos provee de el parámetro clean, quien eliminara por completo todos los paquetes que se encuentren descargados en la cache.
Pero para que quede claro que es lo que estamos eliminando listaremos el contenido de esta cache.
ls -l /var/cache/apt/archives
Si comparamos la lista de paquetes descargados en este directorio, con la listas de paquetes a actualizar en el ejemplo de actualización de paquetes, veremos que son las mismas, estos son los paquetes que se descargaron para ser actualizados.
Bajo la sintaxis de aptitude ejecutamos para que sean eliminados:
sudo aptitude clean
Como clean no imprime ningún tipo de resultado, verificamos que el directorio este vacío y su tamaño…
ls -l /var/cache/apt/archives
sudo du -sh /var/cache/apt/archives
…respectivamente.
Donde comprobaremos que la operación de limpieza de cache fue efectiva.
Puedes seguirnos en:
Ayudanos a mantener el sitio con una contribución.
Muchas gracias!
Espero sea de utilidad.
Saludos, Cristian Bellini.
4 comentarios
Muchas gracias por compartir y divulgar tus conocimientos. Son de gran ayuda y valiosos. Enhorabuena por tú manera de explicarlos. ¡Gracias Cristian!.
Muchas gracias a vos por leernos!! Me alegra que sea de utilidad! :-)
Muy buen artículo, explicado con gran detalle.
Muchas gracias… Pronto estará disponible el de slackpkg y apt-get.