Artículo para la revista Solo Linux número ??: Herramientas de

gestión de paquetes para Debian

Javier Fernández-Sanguino Peña

14 Enero 2001


En este artículo se van a estudiar las distintas herramientas de paquetes disponibles para la distribución Debian GNU/Linux, tanto las incorporadas en la propia distribución como las desarrolladas por otros fabricantes.

1. Los paquetes en una distribución y su gestión

Cualquier persona que se ha enfrentado a una distribución de GNU/Linux habrá observado el componente fundamental de la mayoría de las distribuciones (excepto, claro, aquellas de "hagalo todo usted mismo"): los paquetes. Se trata de un concepto que no es particular de dichas distribuciones, de hecho se utiliza en el mundo UNIX, en sistemas operativos propietarios, hace ya un buen tiempo. Pero sin embargo en las distribuciones adquiere un énfasis particular, dado que los sistemas de paquetes llevan funcionalidades adicionales, con el interés de librar al usuario de tareas que se podrían gestionar mejor de forma automática. De este interés surgen los conceptos de "paquetes que dependen de otros paquetes", "paquetes que entran en conflicto con otros", etc..

En cualquier caso, es necesario diferenciar entre lo que es el sistema de paquetes y el formato de paquetes, para no dar lugar a confusión. El sistema de paquetes es el conjunto de reglas propias de una distribución que le indican dónde se localizan los programas, cómo se instalan demonios en el sistema, qué ficheros genéricos de configuración son accesibles (o modificables) por los programas, así como las distintas interacciones entre los paquetes, indicando, por ejemplo, si dos programas tienen incompatibilidades y no pueden coexistir en el mismo sistema.

No entraremos en detalle sobre qué es, por dentro un paquete (tema tratado en el artículo "Creación de paquetes Debian GNU/Linux" en el número 4 de la revista Linux Actual), pero baste decir que, para los propósitos de un usuario, no es más que un formato de fichero determinado para englobar todos los elementos que forman parte de un determinado software. Estos elementos serán: binarios, páginas de manual, documentos HTML, imágenes y ficheros de configuración.

De entre todas las distribuciones de GNU/Linux se puede decir, sin ningún tipo de duda, que el sistema de gestión de paquetes de Debian GNU/Linux es el más completo de todos, y el que ofrece las herramientas más interesantes al administrador de dichos sistemas (que, en el caso de los sistemas caseros coincide con el usuario final).

En este artículo se van a introducir las distintas herramientas disponibles para los usuarios de Debian GNU/Linux, así como la forma en que dichas herramientas se integran y complementan. No se tratarán aquí, sin embargo, las particularidades del sistema de paquetes y sus (grandes) diferencias con otras distribuciones.

2. La vista general, como se relaciona todo

Como se muestra en la figura 1, las herramientas de gestión de paquetes abarcan distintos niveles de una sencilla arquitectura. Desde el gestor de paquetes fundamental, pasando por las librerías que incrementan su funcionalidad, hasta las herramientas de alto nivel, capaces de interactuar directamente con el el gestor de paquetes, o a través de las librerías disponibles.

En Debian GNU/Linux esto se concreta en las siguientes herramientas:

Esta división no implica que el uso de las herramientas de bajo nivel estén vedadas al usuario, más bien al contrario, es habitual hacer uso de éstas directamente. Sin embargo su uso se recomienda a usuarios que conozcan Debian dado que su uso directo, por ejemplo en la instalación de paquetes, puede dar lugar a comportamientos no esperados por la persona que no conozca el sistema de paquetes.

Por ejemplo, un usuario novel puede haber oído que Debian GNU/Linux es capaz de actualizar automáticamente la lista de paquetes e instalar los paquetes que se hayan actualizado. Sin embargo, si intenta realizar esta operación directamente con dpkg quedará descorazonado al no ver esta funcionalidad disponible. Se preguntará "pero si éste es el gestor fundamental, ¿por qué no puedo hacerlo desde aquí?". La respuesta la conoce cualquier persona con experiencia en el mundo GNU/Linux o en UNIX en general: la filosofía no es construir herramientas monolíticas sino, en base a pequeñas herramientas, ir incorporando nuevas funcionalidades.

Al margen de ésto, el lector avanzado quizás eche en falta muchas pequeñas herramientas disponibles en Debian GNU/Linux. Existen muchas que interactúan con el sistema de paquetes para dar información al administrador, pero estas se tratarán al final de este artículo.

3. Dpkg, la herramienta principal

Dpkg es, sin duda, una de las herramienta más compleja de la existentes en Debian GNU/Linux. Si un usuario novel ejecuta dpkg -h posiblemente se quede apabullado por las más de tres pantallas de información que saltan a la vista. Pero no es, ni mucho menos, una herramienta difícil de utilizar.

Dpkg es la herramienta fundamental dentro del sistema de paquetes de Debian GNU/Linux. Es la encargada de instalar o eliminar paquetes, y manejar la base de datos del sistema con la situación de paquetes, de forma que indique claramente estos cambios. Además, dado que conoce las interioridades del sistema de paquetes, no sólo instala los ficheros que contiene los paquetes en los lugares correspondientes, sino que también ejecuta en determinados momentos de la instalación, los programas que el desarrollador del paquete haya indicado. De esta forma, al instalar un paquete, se llamará de forma "mágica" al programa encargado de configurarlo. Éste podrá modificar sólo unos pocos ficheros en el sistema, o mostrar al usuario una interfaz para adaptar el programa que está instalando a su sistema.

Así, la herramienta dpkg permite:

Y muchas otras cosas más, como auditar el sistema, sacar la información de situación del sistema de paquetes: qué paquetes están marcados para instalar, cuáles han sido configurados, etc..

El usuario experto, que juguetee con el formato de paquetes sabrá que dpkg también puede extraer los ficheros de un fichero .deb. Ya dijimos antes que no es lo mismo un sistema de paquetes que los paquetes en sí, éstos últimos no son más que un conjunto de ficheros. En esencia, existen las mismas diferencias entre un fichero .deb y un fichero .rpm que la existente entre un fichero .arj y un fichero .zip.

Así pues, dpkg puede manejar directamente los ficheros .deb que tengamos:

En realidad, para llevar a cabo estas funciones, dpkg llama, de forma transparente, a la aplicación dpkg-deb.

4. Interrelaciones entre paquetes

Debian introduce en sus sistema de paquetes una serie de interrelaciones que permiten a los desarrolladores indicar cómo se comportan sus paquetes con el resto de los paquetes de la distribución. De ésta forma el paquete adquiere otra entidad (quizás podría denominarse social dentro del mundillo de paquetes), y el sistema de paquetes gana en complejidad. Pero, al mismo tiempo, facilita enormemente su utilización al usuario ya que, le avisa de determinadas situaciones, como puedan ser:

Está clara su utilidad, ya que así un usuario evita instalar dos gestores de correo que, al configurarse, entrarían en conflicto entre sí, "luchando" por los buzones de correo de los usuarios.

Sin embargo, aunque dpkg "entiende" las interrelaciones entre paquetes, no las gestiona. Esta tarea queda a los interfaces y, actualmente, es gestionada por apt.

5. Apt, el gestor de interrelaciones

Apt, acrónimo de Advanced Package Tool, (ver la página de manual con man apt o, mejor aún, /usr/doc/apt/guide.text.gz) es el conjunto de herramientas ofrecida por Debian para que los usuarios no tengan que llevar a cabo la siguiente tarea, habitual en otras distribuciones:

Apt permite decirle al sistema: "instala X", y éste, apropiadamente configurado, buscará Y, W, Z, V los instalará, quitará M (que entra en conflicto con M) y ¡dejará X totalmente instalado!. Es más, podrá recoger algunos paquetes de un CD-ROM y otros de un servidor de FTP.

Es capaz de hacer esto gracias al sistema de dependencias, y a su conocimiento de éste. Además apt puede configurarse para acceder a distintas fuentes de paquetes, estas fuentes podrán ser:

Todo esto se gestiona a través del fichero de configuración /etc/apt/sources.list (ver la página de manual man sources.list) aunque existen herramientas para añadir automáticamente dichas fuentes. La forma habitual es hacerlo desde una de las interfaces que se verán más abajo (las que ofrecen esta funcionalidad), aunque se puede hacer también desde la línea de comandos ejecutando /usr/sbin/apt-setup (que de hecho es lo que se ejecuta al instalar el sistema base). Más aún, si el usuario quiere añadir simplemente un nuevo CD-ROM lo más fácil es ejecutar como superusuario /usr/sbin/apt-cdrom add.

Aunque apt es un sistema pensado para ser utilizado como interfaz a dpkg por las interfaces de usuario (ya sean gráficas o de texto), puede ser utilizado directamente por el superusuario desde una consola. Sin embargo, se debe hacer una advertencia previa: apt no instala automáticamente aquellos paquetes definidos como "Sugeridos", por lo que algunos programas pueden no instalarse con toda la funcionalidad que se esperara de ellos. Queda avisado.

Las herramientas que se instalan con apt son dos: apt-get y apt-cache (ver sus correspondientes páginas de manual). La primera se utilizará para instalar o eliminar los paquetes deseados, la segunda para consultar la información de los paquetes y sus dependencias.

Algunos ejemplos:

También es posible añadir fuentes de código fuente, si las añadimos (tipo deb-src) se le podrá decir, a apt-get que coja las fuentes de un paquete. Éste obtendrá los ficheros necesarios y dejará preparado un directorio para poder compilar directamente el paquete. Así, si se quisiera compilar para nuestro sistema, por ejemplo, el mismo apt, sólo habría que hacer: apt-get source apt && cd apt-* && dpkg-buildpackage o bien apt-get --compile source apt

Dado que apt-get descarga los paquetes a instalar en un almacenamiento temporal, /var/cache/apt, se recomienda que la partición que incluya este directorio tenga un tamaño suficiente para la descarga, ya que puede haber ocasiones en que se necesario descargar muchos paquetes para actualizar un sistema (siempre y cuando no tenga acceso a ellos directamente, es decir, no utilice un CD-ROM o un sistema de ficheros local). En cualquier caso puede borrar dicha caché cuando lo desee utilizando apt-cache clean.

6. Interfaces de texto

Vistas ya las distintas herramientas de bajo nivel, desarrolladas con la intención de ser usadas por línea de comandos se van a ver las interfaces desarrolladas para interactuar con el sistema de paquetes. Estas interfaces tienen como objetivo el facilitar al usuario la gestión diaria del sistema de paquetes, de forma que pueda ver, de forma integrada, los paquetes disponibles, sus descripciones, y sus interrelaciones. Además, estas interfaces hacen una mejor gestión de las dependencias que apt, ya que pueden ofrecer al usuario una serie de alternativas cuando ésto sea posible para que éste elija la que le conviene (apt sin embargo, elije la que cree conveniente que puede no ser la más acertada, sobre todo en el caso de paquetes "virtuales").

Las herramientas de texto siempre han sido criticadas por los usuarios más noveles por considerarlas, de entrada y careciendo de experiencia en ellas, de arcaicas y artificiales. Sin embargo es conveniente recordar que no todos los usuarios en todos los sistemas disponen de interfaces gráficos y, aunque sea la norma en los sistemas caseros, no es lo habitual en la gestión de sistemas en otros ambientes. Así pues, conviene empezar primero por éstas, aunque puedan desilusionar al principiante.

De las herramientas de texto de gestión de paquetes Debian GNU/Linux incorpora dos que cabe destacar, en primer lugar dselect el interfaz estándar para gestionar paquetes, y aptitude un interfaz nuevo que funciona directamente sobre apt.

Dselect (ver Figura 2 y Figura 3) es una de las herramientas que posiblemente más criticada haya sido en Debian pero, aunque su funcionamiento pueda parecer al principio complicado, está convenientemente documentada (en el directorio de instalación de los CD-ROMs en el documento dselect.beginner proporcionado en varios formatos) y cumple su cometido perfectamente.

Desde esta herramienta se pueden configurar los métodos de obtención de paquetes, listar los paquetes disponibles e instalar los mismos (dselect indicará si surgen conflictos, o recomendará los paquetes que crea conveniente). Por último, se podrá lanzar la instalación de los paquetes seleccionados. Aunque apt es el interfaz por defecto para el acceso a los paquetes, mucho antes de que existiera apt se disponía de sistemas de acceso a colecciones de paquetes a través de los métodos de dselect. Existen métodos disponibles para acceso a colecciones de CDs, sistemas por NFS, servidores FTP...

Aptitude (ver Figura 4 y Figura 5) es, por otro lado, un sencillo motor de acceso mediante consola a las funciones de apt. El interfaz es capaz de mostrar la lista de paquetes y sus dependencias con otros, indicando con un código de colores la posibilidad de instalar (o no) éstos (si las dependencias se cumplen). Se encuentra aún en fase de desarrollo, pero es perfectamente utilizable desde un punto de vista de un administrador. Se trata de una herramienta más sencilla que dselect ya que basa toda las funciones de configuración e instalación en apt. Sin embargo, carece de cierta funcionalidad útil, como la modificación de fichero de fuentes (que por otro lado, si se realiza en consola se puede hacer con apt-setup como se ha comentado previamente).

7. Interfaces gráficos

Sin embargo, no es necesario limitarse a interfaces de texto a la hora de tener que llevar a cabo la gestión de paquetes. Los interfaces gráficos son, a menudo, más versátiles (y visuales) para los usuarios noveles. Además, dadas las características de la interfaz gráfica (generalmente de mayor resolución que la consola) suelen ser de manejo más cómodo.

Debian GNU/Linux 2.2 incorpora un interfaz aún en desarrollo para la gestión de paquetes desde la interfaz gráfica (que tendrá que hacerse siempre como superusuario, ver Listado 2), se trata de gnome-apt. Gnome-Apt, como se puede ver en la Figura 6, muestra de un vistazo todos los paquetes disponibles, y la descripción del paquete disponible. También incluye funcionalidad para el rápido filtrado de paquetes, por estado, por prioridades y por textos claves. Gnome-apt permite la rápida edición de las fuentes de paquetes de forma gráfica, que posteriormente se volcará en el archivo de configuración de apt.

La vista seleccionada en gnome-apt, en el que se muestra determinadas columnas con información sobre los paquetes, es totalmente configurable. Sin embargo, gnome-apt aún no incluye ciertas funcionalidades interesantes, como la resolución inversa de dependencias o la búsqueda de paquetes "huérfanos".

Otra herramienta gráfica, pero esta vez utilizando el toolkit Qt (en lugar de gtk) que quizás pronto se distribuya en Debian es qaptivate, disponible en ftp:/unilinux.sourceforge.net/pub/unilinux. Esta herramienta se encuentra, sin embargo, aún en estado alpha.

Las distribuciones comerciales basadas en Debian también distribuyen sus propios interfaces gráficos de gestión de interfaces. El autor ha tenido la ocasión de estudiar tanto el Corel Updater de la distribución Corel Linux, como el stormpkg (ver Figura 8).

Éste último está cuidadosamente diseñado, a diferencia del primero, que sufre las prisas con las que Corel se introdujo en el mundo del software libre, y se distribuye con licencia GPL, así que es posible que en un futuro se incluya en la distribución principal. Además, está totalmente integrado con el escritorio y de forma inteligente (no obliga a que el interfaz de ventanas se ejecute como superusuario o se hagan triquiñuelas). Al arrancar muestra como primera pantalla la posibilidad de filtrado de los paquetes, de forma que sólo se muestren aquellos que el usuario quiera ver desde un principio.

Stormpkg utiliza atp para la instalación de las aplicaciones, que se realiza en el terminal desde el que se lanza y, para evitar interferir en la instalación, el gestor de paquetes se oculta convenientemente dejando libre la vista. El instalador de Corel, por otro lado, introduce la salida de apt en una pantalla que hace difícil resolver algún tipo de situaciones que puede darse al llevar a cabo la instalación de muchos paquetes.

Stormpkg y Corel Updates permiten la edición del fichero de fuentes de apt pero el primero es más cuidadoso que el último. Por ejemplo, Corel Updates no lleva bien la edición manual (o por terceras herramientas como apt-cdrom de las fuentes de paquetes, al tiempo que las fuentes que se pueden introducir están limitadas. Stormpkg sin embargo, acepta la edición manual y la interpreta correctamente (salvo en el caso de los CD-ROMS añadidos con apt-cdrom, en el que interpreta mal los corchetes de descripción de éstos). Es más, si el usuario deshabilita editando manualmente las fuentes y añadiendo un comentario, incluso a las propias de Storm Linux, stormpkg lo aceptará gustosamente ya que sigue el mismo convenio (introducción de comentarios) para habilitar y deshabilitar fuentes de paquetes.

Existen otros gestores de paquetes gráficos en distribuciones basadas en Debian, como el de Libranet, sin embargo éstos son menos conocidos debido al difícil acceso a éstos.

8. Otras herramientas para el usuario avanzado

Existe muchas otras herramientas para la gestión de paquetes en Debian, que han sido realizadas de forma experimental y tardarán un tiempo en ser integradas dentro de las interfaces de usuario. Además están disponibles en Debian woody (la versión de desarrollo actual de Debian) y no podrá encontrarlas en Debian 2.2. Entre otras podemos hablar de:

9. Resumen

El sistema de paquetes de Debian es muy complejo, pero muy enfocado al usuario final, y proporciona múltiples interfaces (para todos los gustos) a sus administradores. El desarrollo de estas interfaces quizás pueda verse como lento, pero otros dirían que es "seguro" en el sentido de que las bases quedan bien asentadas antes de ir a una capa más arriba de dicho desarrollo.

Debian tiene como propósito para su próxima versión el estandarizar el interfaz gráfico a utilizar en las instalaciones con soporte gráfico, este interfaz aún está por decidir, y tanto gnome-apt como las versiones comerciales licenciadas bajo GPL son opciones posibles, el tiempo nos dirá cual de ellas es la mejor preparada para ofrecerse como interfaz por defecto para todos los usuarios.

10. Sumarios

Los sistemas de paquetes son conocidos por los usuarios de distribuciones GNU/Linux.

El sistema de paquetes es distinto al formato.

El sistema de gestión de Debian GNU/Linux es el más completo de todos.

Las herramientas abarcan distintos niveles.

Dpkg es la herramienta fundamental de paquetes en Debian.

Es importante entender las interrelaciones entre paquetes.

Apt puede ser utilizado directamente por el usuario.

Apt puede descargar paquetes de CDs, servidores de FTP y WWW

Las interfaces ayudan a la gestión integral.

Las herramientas de texto son necesarias en algunos sistemas.

gnome-apt es la herramienta gráfica, aún en desarrollo.

Las distribuciones comerciales incorporan sus propias herramientas

Stormpkg incluye funcionalidades similares a gnome-apt

Existen otras herramientas para el usuario avanzado

Debian estandarizará el interfaz gráfico en su próxima versión

11. Listados

LISTADO 1

El lector avispado habrá observado que, aunque no se muestran las herramientas de gestión de paquetes basados en rpm (el formato original realizado por la distribución RedHat). La librería intermedia de gestión de paquetes apt se solapa con el sistema de paquetes rpm. Esto se debe a que, recientemente, la distribución Connectiva Linux ha llevado a cabo el esfuerzo de modificar apt para que éste pueda ser utilizado también para paquetes rpm.

Queda aún por ver si apt se convertirá en la herramienta intermedia común para todas las herramientas de gestión de paquetes, pero este paso es, sin duda (así como algunas otras aportaciones de Connectiva Linux a la base de código de apt como la posibilidad de comprobar las firmas digitales de los paquetes) un paso decisivo para la integración de la gestión de los distintos sistemas de paquetes. Ya no sólo serán los usuarios de Debian los que podrán asombrar a sus compañeros de las capacidades de sus sistemas, sino que se podrá beneficiar toda la comunidad de usuarios de GNU/Linux.

PIE LISTADO 1: Apt también para rpm

LISTADO 2

Algunos usuarios pueden pensar que para poder hacer uso de los interfaces gráficos es necesario ejecutar el interfaz de ventanas como superusuario. Es cierto que dichos interfaces, para poder hacer las funciones de gestión de paquetes (instalación y eliminación) deben tener acceso de superusuario en la máquina, pero para esto no es necesario ejecutar las X como superusuario.

Existen varios métodos para llevar esto a cabo, uno de ellos es lanzar una sesión de terminal, permitir el acceso al sistema local (con la orden xhost + localhost), convertirse en superusuario (su -), indicar el servidor de X a utilizar (export DISPLAY=localhost:0.0) y lanzar la aplicación correspondiente. Otro método, más seguro, consiste en no permitir el acceso a todos los usuarios de la máquina (al hacer xhost) sino, como superusuario, cargar el fichero de autoridad para acceso al servidor de X (con xauth merge /directorio/.Xauthority), siendo directorio el directorio del usuario que inició la sesión de X, y luego ejecutar el programa.

Por último, el método utilizado (de forma inteligente) por la distribución Storm Linux, es instalar un acceso en el escritorio que llama a la aplicación gtk-su con parámetros para que, tras autenticar la contraseña del superusuario, lanza la aplicación de gestión de paquetes.

PIE LISTADO 2: Ejecución de interfaces gráficos y el superusuario

LISTADO

Se puede encontrar más información sobre Debian en general en:

Las herramientas aquí comentadas vienen acompañadas de documentación pero son referencias fieles al sistema de gestión de paquetes: El manual de empaquetamiento (disponible en /usr/share/doc/packaging-manual, La guía del usuario de Apt (disponible en /usr/share/doc/apt/).

Para saber qué servidores de Debian están disponibles para descargase paquetes consulte http://www.debian.org/misc/README.mirrors, y podrá conseguir mucha más documentación de Debian en http://www.debian.org/doc. Por supuesto, las listas de distribución son de gran ayuda siempre (http://www.debian.org/MailingLists/), si quiere seguir el desarrollo de apt, subscríbase a deity@lists.debian.org, si quiere consultar cosas con usuarios y desarrolladores hispanoparlantes, hágalo en debian-user-spanish@lists.debian.org.

PIE LISTADO 3: Más información

12. Capturas

13. Notas de maquetación

14. Notas de coordinación

El artículo puede quedar más de 4 páginas por las capturas y los listados. Si fuera necesario, se puede separar en dos partes. Una hasta los interfaces de texto (con Listado 1 y figuras 1-5 ) y otra de los interfaces gráficos (Listado 2 y Figuras 6-8).

Si se separa, hablar con el autor para añadir un párrafo de resumen del artículo intermedio (adelantando de lo que se hablará en el siguiente) e incorporaré otros textos que no he añadido pero muy interesantes a saber: cómo buscar utilizando las herramientas de consola paquetes y programas y la nuevas tendencias de HelixCode para ofrecer un interfaz de gestión de paquetes único para Debian/RedHat/Solaris...