Una de las funciones que tiene el script configure es determinar las rutas donde se instalarán los diferentes componentes del software que se está configurando. Esta configuración se lleva a cabo a través de los parámetros que recibe. El ejemplo más clásico es --prefix, que determina la raíz de instalación bajo la cual se crearán el resto de los directorios.
El estándar GNU especifica una serie de variables que contienen las rutas donde se instalará el software. Estos valores pueden definirse a través de los parámetros en la línea de comandos que se le pase al script de configure, el cual los analizará y definirá una serie de variables con los valores que se les ha pasado.
Algunas de estas variables pueden consultarse en la siguiente tabla:
Variable | Descripción |
---|---|
$prefix | Prefijo común de todas las rutas que se usa para instalar todos los ficheros |
$bindir | Ruta hacía los programas que los usuarios podrán ejecutar |
$sbindir | Ruta hacía los programas que sólo puede usar el administrador del sistema |
$sysconfdir | Ruta donde se instalará los ficheros de sólo lectura específicos de una máquina. Normalmente, ficheros de configuración |
Es importante hacer notar un hecho sobre estas variables. Están pensadas para ser usadas dentro de los ficheros Makefile, y que es preferible no evaluarlas dentro de los ficheros configure. Si se quiere el valor dentro de un programa, lo mejor es usar algún mecanismo para pasar el valor definido. Por ejemplo, si estamos usando C, se puede definir una macro con el valor de la variable que nos interesa y qcompilarla. No suele funcionar usarla como parámetros de macros.
A continuación un pequeño ejemplo que permite ver el comportamiento de estas variables en acción. Se trata del tut2, un pequeño programa que sirve para probar que está en autotools tutorial. A continuación el configure.ac y el tut2.c que se van a usar:
configure.ac
1 dnl Esto es un comentario 2 dnl Esta macro fuerza a una versión mínima de autoconf 3 AC_PREREQ([2.59]) 4 AC_INIT([tut2],[1.0],[cterron@users.sourceforge.net],[tut2.tar.gz], 5 [https://sourceforge.net/p/autotutorial/]) 6 dnl Necesitamos el compilador de C 7 AC_CONFIG_HEADERS([config.h]) 8 AC_PROG_CC 9 dnl Init automake 10 AM_INIT_AUTOMAKE 11 dnl Definición de variables con los path 12 dnl Ver http://www.gnu.org/software/autoconf/manual/autoconf.html#Makefile-Substitutions 13 CFLAGS="$CFLAGS -DBINDIR=\\\"$bindir\\\"" 14 CFLAGS="$CFLAGS -DDATADIR=\\\"$datadir\\\"" 15 CFLAGS="$CFLAGS -DLIBDIR=\\\"$libexecdir\\\"" 16 CFLAGS="$CFLAGS -DPREFIX=\\\"$prefix\\\"" 17 CFLAGS="$CFLAGS -DSBINDIR=\\\"$sbindir\\\"" 18 CFLAGS="$CFLAGS -DSHAREDSTATEDIR=\\\"$sharedstatedir\\\"" 19 CFLAGS="$CFLAGS -DSYSCONFDIR=\\\"$sysconfdir\\\"" 20 21 22 AC_CONFIG_FILES([Makefile]) 23 AC_OUTPUT
tut2.c
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main(int argc, char **argv) 5 { 6 printf("prefix \t\t= %s\n", PREFIX); 7 printf("bindir \t\t= %s\n", BINDIR); 8 printf("sbindir\t\t= %s\n",SBINDIR); 9 printf("sysconfdir\t= %s\n", SYSCONFDIR); 10 exit(0); 11 } 12 13 /* vim: ts=4: */
Estos dos ficheros nos permiten ver el comportamiento de las opciones que se le pasan al script configure a la hora de definir los path. Por ejemplo, si se compila con las siguientes opciones:
./autogen ./configure --prefix=/opt --sysconfdir=/etc
make clean
make
./tut2
La salida del programa es
prefix = /optSe verá que la salida del programa el valor con el que se fijan algunas variables
bindir = /opt/bin
sbindir = /opt/sbin
sysconfdir = /etc
Esto tiene espacial importancia a la hora de utilizar los ficheros makefiles generados para poder instalar el programa en las rutas que se desean. Además, permite una gran flexibilidad ya que incluso se pueden establecer esas variables a la hora de ejecutar una instalación a través de make install
Referencias
- Manual de autoconf en inglés
No hay comentarios:
Publicar un comentario