Por razones puramente técnicas, el hecho de disponer de los fuentes es la posibilidad de portar el software. Un software libre desarrollado para un sistema UNIX se puede usar en todos los sistemas UNIX existentes (sean libres o propietarios), con pocas modificaciones o ninguna. Esto implica una configuración del software justo antes de la compilación.
Existen muchos sistemas de configuración, Usted tiene que usar el que el autor del software quiera (a veces, se necesitan varios) Por lo general, Usted puede:
usar AutoConf (consulte la sección “Autoconf”) si existe un fichero denominado configure en el directorio padre de la distribución.
usar imake (consulte la sección “Imake”) si existe un fichero denominado Imakefile en el directorio padre de la distribución.
ejecutar un script del shell, (por ejemplo, install.sh) según lo que diga el fichero INSTALL (o el fichero README)
AutoConf permite configurar el software correctamente. Crea los ficheros necesarios para la compilación (por ejemplo, el fichero Makefile), y, a veces, cambia los fuentes directamente (como, por ejemplo, al usar un fichero config.h.in)
El principio de AutoConf es simple:
el programador del software sabe qué pruebas son necesarias para configurar su software (ejemplo: “¿qué versión de esta o aquella biblioteca usa”?) Él las escribe, siguiendo una sintaxis precisa, en un fichero denominado configure.in.
Él ejecuta AutoConf, el cual genera un script de configuración denominado configure a partir del fichero denominado configure.in. Este script efectuará las pruebas necesarias cuando se configure el programa.
El usuario final ejecuta el script, y AutoConf se encarga de configurar todo lo que es necesario para la compilación.
Un ejemplo del uso de AutoConf:
$ ./configure loading cache ./config.cache checking for gcc... gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... yes checking whether gcc accepts -g... yes checking for main in -lX11... yes checking for main in -lXpm... yes checking for main in -lguile... yes checking for main in -lm... yes checking for main in -lncurses... yes checking how to run the C preprocessor... gcc -E checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include checking for ANSI C header files... yes checking for unistd.h... yes checking for working const... yes updating cache ./config.cache creating ./config.status creating lib/Makefile creating src/Makefile creating Makefile |
Para tener un mayor control de lo que genera configure, se le pueden pasar algunas opciones por medio de la línea de comandos o variables de entorno. Por ejemplo:
$ ./configure --with-gcc --prefix=/opt/GNU |
$ export CC=`which gcc` $ export CFLAGS=-O2 $ ./configure --with-gcc |
$ CC=gcc CFLAGS=-O2 ./configure |
Un error típico del script configure es aquel del tipo configure: error: Cannot find library guile (configure: error: no se encuentra la biblioteca guile) (La mayoría de los errores del script configure lucen así).
Esto significa que el script configure no pudo encontrar una biblioteca (guile en nuestro ejemplo). El principio es que el script configure compila un pequeño programa de prueba que usa esta biblioteca. Si la compilación de este programa no tiene éxito, no podrá compilar el software. Entonces ocurre un error.
Busque la razón del error examinando al final del fichero config.log, que contiene una traza de todos los pasos de configuración. El compilador de lenguaje C es suficientemente claro con sus mensajes de error. Eso lo ayudará a resolver el problema.
Verifique que la biblioteca en cuestión esté instalada correctamente. Si no es así, puede correr /sbin/ldconfig, borrar el fichero config.cache y volver a ejecutar el script configure. Si todavía sigue con problemas, intente volver a instalar la biblioteca (desde los fuentes o desde un fichero binario) Una forma eficiente de verificar la instalación es buscar el fichero que contiene los símbolos de la biblioteca, que siempre se denomina lib<nombre>.so. Por ejemplo,
$ find / -name 'libguile*' |
$ locate libguile |
Verifique que el compilador puede acceder a la biblioteca. Eso significa que la misma se encuentra en algún directorio entre: /usr/lib, /lib, /usr/X11R6/lib (o entre aquellos especificados por la variable de entorno LD_LIBRARY_PATH, explicada en “¿Qué pasa si... no funciona?” número b). Verifique que este fichero es una biblioteca ingresando file libguile.so.
Verifique que los ficheros de encabezado correspondientes a la biblioteca se encuentran en el lugar adecuado (generalmente, /usr/include o /usr/local/include o /usr/X11R6/include) Si Usted no sabe cuales son los ficheros de encabezado necesarios, verifique que instaló la versión de desarrollo de la biblioteca en cuestión (por ejemplo, libgtk+2.0-devel en vez de libgtk+2.0) La versión de desarrollo de la biblioteca proporciona los ficheros “include” (incluir) necesarios para compilar un software usando esta biblioteca.
Verifique que Usted tiene espacio suficiente en el disco (el script configure necesita de algo de espacio para ficheros temporales). Use el comando df -h para visualizar las particiones de su sistema, y note las particiones llenas o casi llenas.
Si Usted no comprende los mensajes de error almacenados en el fichero config.log, no dude en pedir ayuda a la comunidad de software libre (consulte la sección “Soporte técnico”)
Es más, verifique si configure responde 100% de No o si responde No y Usted está seguro que la biblioteca existe (por ejemplo, sería muy extraño que no exista la biblioteca curses en su sistema) Si ese es el caso, ¡probablemente esté mal configurada la variable LD_LIBRARY_PATH!
imake le permite configurar un software libre creando un fichero Makefile a partir de reglas simples. Estas reglas determinan los ficheros necesarios para compilar el fichero binario, y luego imake genera el fichero Imakefile correspondiente. Estas reglas se especifican en un fichero denominado Imakefile.
Lo que tiene interesante imake es que usa información dependiente del sitio (dependiente de la arquitectura). Esto es muy útil para las aplicaciones que usan X Window System. Pero imake también se usa para muchas otras aplicaciones.
La forma más fácil de usar imake, es entrar en el directorio principal del archivo descomprimido, y luego correr el script xmkmf, que llama al programa imake:
$ xmkmf -a $ imake -DUseInstalled -I/usr/X11R6/lib/X11/config $ make Makefiles |
Si el sitio no está instalado correctamente, ¡debe recompilar e instalar X11R6!
Para más información lea los ficheros INSTALL o README. Por lo general, Usted tiene que ejecutar un fichero del tipo install.sh o configure.sh. Entonces, o el script de instalación será silencioso (y determinará lo que necesita por sí solo), o le preguntará información sobre su sistema (por ejemplo, las rutas)
Si Usted no llega a determinar el fichero que tiene que ejecutar, puede ingresar ./ (bajo bash), y luego presionar dos veces la tecla TAB (tecla del tabulador) bash completará automáticamente el nombre de un fichero ejecutable en el directorio corriente (por lo tanto, un posible script de configuración) En caso de que varios ficheros se puedan ejecutar, le dará una lista. Solo debe elegir el fichero correcto.
Un caso particular es la instalación de módulos perl (aunque no solamente de estos) La instalación de tales módulos se hace mediante la ejecución de un script de configuración, el cual se encuentra escrito en perl. Por lo general, el comando a ejecutar es:
$ perl Makefile.PL |
Algunas distribuciones de software libre están mal organizadas, especialmente durante las primeras etapas de desarrollo (¡pero se previene al usuario!) En las mismas se necesita retocar “a mano” algunos ficheros de configuración. Por lo general, estos ficheros son un fichero Makefile (ver la sección “Make”) y un fichero config.h (este nombre sólo es convencional) Como siempre, ¡lea los ficheros README e INSTALL!
No recomendamos que estas manipulaciones sean hechas por usuarios que no sepan lo que están haciendo. Esto necesita de conocimientos reales y la motivación necesaria para tener éxito. Pero, la práctica lleva a la perfección.