Bases de compilación e instalación
En el LPI-1 se habla de las instalaciones de programas por RPM y DEB principalmente, pero no siempre el programa que queremos instalar está empaquetado o bien es más recomendable instalarlo desde el código fuente, o también denominado compilación.
La mayoría del software en Linux está disponible como código fuente y como código binario. el fuente se transforma en binario por un programa conocido como el compilador. El código binario está personalizado para un Sistema operativo en particular o un hardware. El código fuente necesita de herramientas de compilación y conocimientos para ponerlo en práctica.
Si no se tiene acceso a los paquetes binarios, necesitas compilarlo, para lo que necesitarás:
– Herramientas de desarrollo apropiadas instaladas en tu sistema, como el GCC (GNU Compiler Collection) escrito en C o C++
– Librerias de desarrollo apropiadas (header files) instaladas en el ordenador. Normalmente son instaladas por separado de los equivalentes binarios.
– Herramientas adicionales, como «tar» para descomprimir ficheros, pues todos vienen así. Generalmente vienen por defecto en el sistema.
Si descargamos un código fuente normalmente viene con documentación, algún README o LEEME con algunas notas a tener en cuenta para compilar.
Voy a tomar como ejemplo el artículo que publiqué aquí sobre Compilar Apache con mod_jk y mod_proxy
1 – Obtener y preparar el código fuente
Para obtener el código fuente del software, nos dirigimos a la página del autor o páginas conocidísimas sourceforge donde podemos encontrar de todo. Las páginas webs tienen paquetes para diferentes plataformas, en Linux tenemos bastantes que descomprimiremos con la utilidad Tar ( con extensiones tar.gz, tgz, ,tbz, tbz2, ó tar.bz2 ) Todos estos ficheros se denominan tarballs.
# wget http://apache.rediris.es//httpd/httpd-2.2.23.tar.bz2
Luego extraemos el tarball y nos metemos en la carpeta:
nexolinux m3t4g4m3 # tar jxvf httpd-2.2.23.tar.bz2 nexolinux m3t4g4m3 # cd httpd-2.2.2
2- Leer la documentación
Haciendo un ls sobre la ruta del fichero que acabamos de extraer, hay ficheros que nos pueden dar información para el proceso, los más típicos son los siguientes:
COPYING – texto de licencia
CHANGELOG – Historial de cambios técnicos en el software.
NEWS – Otro historial de cambios menos técnico
README – Documentación General
INSTALL – Instrucciones para instalar el software
La mayoría del software requiere un procedimiento similar, pero no está completamente estandarizado.
3 – Compilando el software
Ahora es donde empiezan los problemas una vez leído y descomprimido el tarball. La herramienta más utilizada para compilar es usando el ./configure que escaneará el sistema y ajustará un fichero llamado el Makefile que controla el proceso de compilación
El script configure admite parámetros que te permiten personalizar la configuración. Esto es una lista de los más comunes:
— help – Resumen de opciones
–quiet – Muestra menos mensajes si el script funciona correctamente.
–prefix=directory – toma como directorio de instalación el directorio señalado, por defecto lo haría en /usr/local
–eprefix=directory – El directorio de instalación para archivos dependientes de la arquitectura, por defecto lo haría en /usr/local
–enable-FEATURE – Habilita una determinada característica específica del programa.
–disable-FEATURE – Deshabilita una determinada característica específica del programa.
–enable-debug=ARG – Selecciona el modo DEBUG, ARG puede tener de valores: yes, no y full, por defecto es no
–with-PACKAGE[=ARG] – habilita soporte para una biblioteca en particular o herramienta externa, ARG por defecto es sí.
–without-PACKAGE – Deshabilita soporte para una libreria particular o herramienta externa.
nexolinux httpd-2.2.23 # ./configure --prefix=/opt/apache-2.2.23 --enable-mods-shared="proxy all" –with-mod_jk
Cuando ejecutamos el configure muestra una serie de líneas que resume lo que está ocurriendo. Comienzan con un «checking» en ocasiones puede descubrir que hemos perdido algún componente sea header o de software:
4 – Compilando el código fuente.
Si hemos completado el ./configure sin errores, el siguiente paso es «make» a partir de su ejecución podemos tardar desde segundos a horas dependiendo del software. Deberíamos estar atentos aunque sea a intervalos de tiempos a ver si observamos errores para interrumpirlo y empezar por el paso 3. Para lo cual es recomendable usar make clean antes de ejecutar otro configure con sus opciones, para limpiar todos los objetos previamente compilados y comenzar con una «limpia»
nexolinux httpd-2.2.23 # make
5- Instalando el software.
En este punto ya iriamos muy bien, y sólo falta hacer make install como usuario root, de lo contrario nos fallará y podemos pensar que es cuestión de recompilar. El programa binario se copiará en la ruta /usr/local/bin
Opciones comunes de make install.
-b or –backup Crea una copia de cada fichero resultante.
-g GROUP or –group=GROUP Cambia el grupo de los ficheros instalados a GROUP
-m MODE or –mode=MODE cambia los ficheros instalados a MODE
-o OWNER or –owner=OWNER cambia el propietario de los ficheros instalados a OWNER
-s or –strip reduce el tamaño de los binarios, pero complica resolver fallos.
-T or –no-target-directory Trata la localización destino como un fichero en lugar de un directorio
-v or –verbose Muestra los nombres de los ficheros y directorios que se están copiando
nexolinux httpd-2.2.23 # make install
6- Desinstalando el software.
Muchos programas tienen este detalle también y no es de otra forma que con make uninstall ejecutándolo como root. Si no lo tuviera hay que borrar los ficheros manualmente.
Deja un comentario