tux_system

Los gestores o administradores de paquetes juegan, al día de hoy, un papel importante en la administración de software en GNU/Linux.

Cada dispositivo computarizado utiliza algún tipo de software para realizar sus tareas. En los primeros días del software, los productos fueron rigurosamente probados para detectar errores y otros problemas. Durante la última década, el software fue lanzado a través de Internet con la intención de que cualquier error fuera corregido aplicando nuevas versiones de software. En algunos casos, cada aplicación individual tiene su propio método de actualización. En otros, el mismo usuario decide cómo obtener y actualizar el software en cuestión.

GNU/Linux adoptó tempranamente la práctica de mantener una ubicación centralizada dónde los usuarios pudieran encontrar e instalar software. Bueno en ésta entrada se discutirá sobre la «historia de la instalación» de software en GNU/Linux y como los sistemas operativos modernos se mantienen actualizados contra el torrente interminable de los CVEs.

¿Cómo se instaló el software en GNU/Linux antes que los gestores de paquetes?

Históricamente, el software se proporcionaba a través de un FTP o de listas de correo (eventualmente ésa distribución crecería hasta incluir sitios web clásicos). Sólo unos pocos pequeños archivos tenían las instrucciones para crear un binario (normalmente en un archivo .tar). Los archivos traían un readme y mientras GCC pudiera ejecutar un script ./configure arrojando un listado de atributos, como la ruta de archivos de librerías, ubicación para crear los binarios, etc. Además, el proceso de configuración comprobaba que nuestro sistema tenga instaladas las dependencias de la aplicación a instalar. En caso de faltar algún requisito importante, el script configure tendría una salida indicando que no se puede proceder con la instalación hasta que se cumplieran todas las dependencias. Si el script ./configure se completa con éxito, se creaba el conocido Makefile.

Cuando ya teníamos el archivo Makefile, se tenía que ejecutar la orden «make» (que ya viene con el compilador). La orden make tiene varias opciones llamadas «flags», que ayudan a optimizar los binarios resultantes para nuestro sistema. En sus tiempos era muy importante porque el hardware luchaba por mantenerse al día con las demandas de software moderno. Ahora, hoy en día, las opciones de compilación pueden ser mucho más genéricas, ya que la mayoría del hardware está más amoldado al software que tenemos.

Finalmente, después de que el proceso make se completó, se necesita ejecutar la orden «make install» (o sudo make install) para poder instalar el software en cuestión. Cómo se puede imaginar, hacer ésto para cada parte de nuestro software consumía mucho tiempo y era un poco tedioso, por no mencionar el hecho de que actualizar era un proceso complicado y potencialmente, en ocasiones, complicado.

¿Qué es un paquete?

Se inventaron paquetes para combatir ésta complejidad. Los paquetes recopilan múltiples archivos de datos juntos en un sólo archivo de almacenamiento para facilitarnos la portabilidad y el mismo almacenamiento, o simplemente comprimen los archivos para reducir espacio en disco. Los binarios incluidos en un paquete están pre compilados de acuerdo con los valores predeterminados que el mismo desarrollador eligió.Los paquetes también tienen meta-datos, como el nombre del software, descripción, el número de versión y una lista de dependencias que se necesitan para que ése software funciona correctamente en nuestro equipo.

Varios sabores de GNU/Linux crearon sus propios formatos de paquetes. Algunos de los formatos de empaque más comúnmente usados incluyen:

.deb: Éste formato de paquete es usando por Debian, Ubuntu, Mint y varios derivados. Fué el primero en crear el empaquetado.
.rpm: Éste formato de paquete se llamaba originalmente Red Hat Package Manager. Es utilizado por Red Hat, Fedora, SUSE y varias otras distribuciones más pequeñas.
.tar.xz: Aunque es sólo un tarball comprimido, éste es el formato que utiliza la conocida distribución Arch Linux.

Aunque los paquetes en sí no gestionan las dependencias directamente, representan un gran paso adelante en la gestión del software en GNU/Linux.

Espero que les haya servido y puedan haber apreciado el tiempo invertido.