La mayoría de los usuarios con conocimiento intermedios (o más) en Linux y sistemas similares habrá alguna vez compilado alguna vez un paquete con la siguiente secuencia de comandos:
./configure
make
make install
Lo que tal vez no muchos conocen es qué herramientas permiten realizar eso y menos aun como se hace para construir los famosos archivos con extensión .tar.gz o .tar.bz2.
Autotools
Se conoce popularmente como autotools al GNU Build System, es decir al conjunto de herramientas para construir paquetes instalables de software.
Si bien un aplicación o una librería puede ser instalada – al menos en principio – a partir de un relativamente sencillo Makefile, tiene en principio dos grandes limitaciones, puede resultar poco flexible para el usuario instalador y puede resultar poco portable.
Las autotools se usan para estandarizar el proceso de instalación. Si bien la curva de aprendizaje de estas herramientas es algo empinada, proporciona una sistematización en la instalación de software a partir de código fuente.
Si bien se han creado con el tiempo algunos sistemas de construcción de paquetes alternativos en los sistemas operativos Linux y similares, es la suite preferida de una gran cantidad de proyectos open source.
De ahí que la secuencia de instalación ./configure && make && make install sea ampliamente conocido por los usuarios de sistemas operativos estilo Linux.
Componentes principales de autotools
autoconf
Crea el célebre script de alta portabilidad configure a partir de un archivo de macros M4. El script configure permite:
- Personalizar la compilación (por ej: deshabilitar soporte para mysql)
- Verificar que los archivos necesarios para compilar están presentes en el sistema
- Imprimir mensajes descriptivos en cada caso
- Crear un archivo Makefile
automake
Es un script de perl que a partir de un archivo “template” crea un archivo Makefile.in que genera archivos que permite crear archivos Makefile compatibles con GNU Coding Standards.1
libtool
Simplifica la creación de librerías (en particular de las dinámicas). Esta herramienta permite crear un nivel de abstracción del tipo de host que se está utilizando y permite al usuario compilar librerías con el mismo método de los tres pasos nombrados con anterioridad.
Resumen
Muy sintética y simplificadamente, la tarea del “maintainer” del paquete es crear de manera consistente archivos configura.ac (para autoconf), Makefile.am (para automake), además de echar mano de ser necesario de marcos M4 para resolver la realización de una tarea (por ejemplo verificar la existencia un determinado header).
Es un sistema que apunta a ser lo más portable posible y hacer previsible y flexible la tarea de instalar paquetes fuente al usuario.
El objetivo principal es hacerle la vida más fácil al usuario antes que al maintainer.
Desde luego, el usuario final rara vez compilará un programa. Sin embargo, crear un paquete instalable a partir del código fuente es el paso previo para crear paquetes ya compilados generalmente en formato RPM o Debian, dependiendo de la distribución. Y las autotools juegan un rol importante en esa etapa intermedia.
Los famosos 3 pasos
Usuario final: ¿A qué nos referimos? is licensed under a Creative Commons Atribución-CompartirDerivadasIgual 2.5 Argentina License. La manera de reconocer los créditos es citando la URL de este sitio.