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 Sección 3.1, “Autoconf”) si existe un
fichero denominado configure
en el
directorio padre de la distribución.
usar imake
(consulte la sección Sección 3.2, “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 Sección 4.5, “¿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 Sección 6.2, “Soporte técnico”)
Es
más, verifique si la biblioteca existe o no, incluso si
configure
dice que la biblioteca no 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 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.
Otro caso particular es la instalación de módulos perl. 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 Sección 4.1, “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.