domingo, 16 de agosto de 2009

Formas de distribución de aplicaciones en GNU/Linux

Cuando terminamos nuestro proyecto y deseamos realizar su distribución, debemos pensar en la forma de empaquetarlo y buscar la manera de que el usuario final pueda instalarlo sin dificultades.

GNU Autotools

El GNU build system conocido también como Autotools es un conjunto de herramientas producido por el proyecto GNU. Estas herramientas están diseñadas para ayudar a crear paquetes de código fuente portable a varios sistemas Unix. El GNU build system forma parte de GNU toolchain y se usa mucho para desarrollar software libre. Aunque las herramientas que contiene el GNU build system son GPL no existe ninguna restricción para crear software portable no libre con él.

El conjunto de herramientas GNU autotools (autoconf, automake & libtool) es el más utilizado cuando se habla de distribuir programas mediante el código fuente. Éstas nos permiten automatizar el proceso de compilación de forma tal que sea sencillo compilar nuestro programa en cualquier máquina.

Una gran cantidad de programas se distribuyen utilizando este mecanismo.

El paso clásico para instalar un programa esta ejecutar: ./configure para que revise nuestro sistema y controle que tenga todas las bibliotecas y demás necesidades especificas de la aplicación (este se crea mediante autoconf). Si todo sale bien podemos hacer:

make

make install

Donde el primer paso(make) compilara nuestra aplicación y el segundo ubicara los binarios y los archivos de datos en los directorios correspondientes.

Junto con este paquete de herramientas se suele utilizar mucho tar y gzip. La primera sirve para crear un paquete , mientras que le segundo permite comprimirlos.

De esta forma se distribuyen paquetes con extensiones .tgz o .tar.gz y generalmente cuando hablamos de distribuir programas estas extensiones indican que se esta instalando un programa desde el código fuente.

RPM

Otro método habitual de distribución de aplicaciones el el RPM un sistema adoptado por varias distribuciones.

RPM Package Manager (o RPM, originalmente llamado Red Hat Package Manager) es una herramienta de administración de paquetes pensada básicamente para Linux. RPM es el formato de paquete de partida del Linux Standard Base.

Originalmente desarrollado por Red Hat para Red Hat Linux, en la actualidad muchas distribuciones GNU/Linux lo usan, dentro de las cuales las más destacadas son Fedora Linux, MandrivaLinux, SuSE Linux y Conectiva Linux. También se ha portado a otros sistemas operativos.

Un RPM es un archivo binario que contiene todo lo que queremos distribuir (binario, código fuente, documentación, etc) pero no es un gran paquete como un tgz. En cambio, un Rpm tiene una cabezara que indica dependencias que posee dicho programa o sea los paquetes que le hacen falta para funcionar. De esta manera, se asegura que el sistema sea consistente para instalar el programa en cuestión y que funcione apropiadamente.

Nos permite no solo instalar RPMs, sino que también podemos actualizar automáticamente, como así eliminarlos.

La desventaja es que esta solución no esta presente en todas las distribuciones. Por lo cual debemos también conocer el gestor de paquetes deb.

Deb

Deb es la extensión del formato de paquetes de software de Debian (utilizado por todos sus derivados) , y el nombre más usado para dichos paquetes.

El programa predeterminado para manejar estos paquetes es dpkg, generalmente via el sistema APT. Nos permite las mismas ventajas que el sistema rpm.

Klik

Un método nuevo de distribución es klik. si bien aun no esta completamente difundido, la idea que lleva consigo es muy buena.

Klik es un proyecto en fase experimental todavía que nos permite instalar programas en nuestro GNU/Linux sin tener que preocuparnos por la administración de los paquetes de software que implica dependencias, compatibilidades de versiones y algunas otras cosas que si bien programas como Synaptic o Urpmi manejan bastante bien Klik las elimina.

Solo es necesario descargar un archivo con extensión .cmg que contiene todo lo necesario para ejecutar el programa en cuestión. Para desinstalar algún programa solo es necesario eliminar el propio archivo .cmg.

Otra característica que posee klik es que se puede ejecutar como un usuario normal, es decir que no hace falta tener la clave del administrador, como suele suceder cuando tratamos de instalar un rpm o deb. Esto es posible porque todo esta en un archivo.