Hay una característica muy buena y poco explotada o conocida en si de la distro preferida de este autor: ArchLinux es una distribución híbrida. Y por híbrida se refiere a que es una distro que utiliza paquetes binarios pre compilados como los .deb y los .rpm pero aquí se llaman .pkg.tar.xz, pero a la vez puede utilizar un modelo de utilizar código fuente y compilarlo según las necesidades propias del usuario y del equipo (al mas puro estilo de gentoo).

 

Esto es lo que quiero explicar en los siguientes posts, de manera detallada y lo mas simple posible, yendo por una explicación mas detallada de lo que son los paquetes, que es ABS, que es AUR y como funcionan. Vamos empezando por aprender la diferencia entre paquetes precompilados y manejo de código fuente:

Paquetes precompilados

Los paquetes precompilados son, como su nombre dice: programas cuyo código fuente fue compilado en un ambiente chroot con ciertas flags y variables para su funcionamiento en arquitecturas generalizadas (x86, x86_64, ARM), con un archivo de texto donde dice información detallada del paquete y su versión, donde se van a mover los archivos precompilados y como lo va a manejar el gestor de paquetes de la distro, todo comprimido en un solo archivo, que el gestor de software reconoce.

Chroot es un comando de Unix que invoca un sistema raíz (root /), un sistema de permisos y un sistema de archivos virtual, dicho simplemente un chroot es un sistema raíz enjaulado. Al compilar un programa en chroot se trata de crear los binarios compilados y los directorios y permisos de un programa sin afectar el sistema base.

Estos paquetes son compilados y (en su caso) parchados por un mantenedor oficial de la distro y lo sube a un repositorio, el usuario descarga ese archivo comprimido con el gestor de paquetes, este descomprime ese archivo, mueve los binarios compilados a donde deben ir, los archivos de ejecución (acceso al menú de aplicaciones) y crea una entrada en su lista de paquetes instalados con el nombre del programa, su versión, la versión del paquete y las dependencias que fueron instalados.

Paquetes en código fuente

El paquete en código fuente es un archivo comprimido, generalmente un tar con compresión gz (.tar.gz) que contiene los archivos de un programa tal cual el programador lo dejo al momento del release, todos son archivos en el código original en que fueron escritorios junto con pequeños iconos o archivos de configuración que puedan necesitar. Este código fuente no sirve de nada si no se compila y se generan binarios ejecutables por el sistema.

 

El usar distros que manejen el código fuente el trabajo de “empaquetado” se hace localmente: de descargan los archivos fuente, se compilan en base a reglas de compilación y compiladores disponibles en el sistema, se generan los binarios y se mueven estos a los directorios asignados. Esto supone algunas ventajas como:

  • Manejar versiones realmente nuevas del software, por que no necesitas que alguien mas lo empaquete.
  • Tener opciones de configuración personalizadas
  • Aplicar nuestros propios parches y correcciones al software original
  • Tener un software configurado específicamente para el hardware de nuestro equipo./li>

Algunas desventajas de usar software en código fuente son:

  • Son versiones realmente nuevas, puede haber bugs, no hay mucho testeo al respecto
  • El avance tan rápido del software y sus versiones pueden generar conflictos de dependencias
  • La configuración, manejo y mantenimiento de estos sistemas requieren de usuarios con conocimientos avanzados

Ninguno supone una ventaja real sobre otro, últimamente sobre estabilidad y rendimiento ambos modelos de manejo de software ofrecen mas o menos lo mismo, con una diferencia tan mínima entre ellos que es difícil ver una ventaja real de uno sobre otro. Todos son solo modelos diferentes de manejar algo: si sufres de versionitis y no puedes esperar al periodo de pruebas de tu distro pues ahí esta el código fuente, si quieres algo lo mas testeado posible y no temes esperar unos días, ahí están los binarios precompilados.

El siguiente post es ver como maneja ArchLinux el código fuente ABS y los PKGBUILDs, saludos.