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.
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:
dpkg
apt
dselect
y
aptitude
, para modo texto, y gnome-apt
, así como las
proporcionadas por las distribuciones comerciales, para el modo
gráfico
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.
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:
dpkg-reconfigure
(del paquete debconf
)
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
.
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
.
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:
apt-get install programa
apt-get remove programa
apt-get update
apt-get upgrade
apt-get dist-upgrade
.apt-get install -s gimp
apt-cache show programa
, y para consultar sus dependencias apt-cache showpkg programa
.
apt-cache search texto
(también se pueden introducir expresiones regulares)
apt-cache depends programa
(incluso se pueden ver de forma gráfica, si tiene instalado graphviz
)
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
.
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).
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.
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:
deborphan
. Que indica qué librerías instaladas han quedado
"huérfanas" es decir, no están siendo utilizadas por ningún
paquete. De esta forma se podrá hacer limpieza del sistema en caso de
que fuera necesario.
dlocate
. Permite buscar ficheros en el sistema y los paquetes
que lo instalaron de una forma más rápida que la utilizada por
dpkg
directamente ya que genera una base de datos binaria
para realizar la búsqueda.
dpkg-iasearch
. Permite búsquedas entre los textos de los paquetes con técnicas de inteligencia artificial (vectorización de documentos) que va más allá del simple grep
o el uso de expresiones regulares.
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.
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
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
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...