Tabla de Contenidos

206.1 Make and install programs from source

Pertenece a LPI Topic 206: System Maintenance

Introducción

Los programas que se utilizan en informática generalmente pertenecen a dos familias:

¿Cuándo hay que compilar? La mayoría de las ocasiones se proporcionan las aplicaciones en forma de paquete ya compilado y listo para su uso.

Sin embargo, otras ocasiones necesita una versión más reciente de una aplicación o configurada con opciones personalizadas. En este caso, debemos compilar e instalar el programa desde el código fuente.

Procedimiento de compilación GNU

Obtención de las fuentes

Descargaremos las fuentes de los ficheros desde el sitio en el que se encuentren.

Generalmente en las webs de los programas obtendremos los enlaces de descarga correspondientes. Con la herramienta wget podemos descargar desde la línea de comandos:

wget http://apache.rediris.es/httpd/httpd-2.2.29.tar.gz

Desempaquetar los codigos fuentes

Las fuentes de los programas suelen venir empaquetadas y compprimidas en diferentes formatos.

Utilizaremos tar o las herramientas especificas de cada formato

GZIP:

Bzip2:

XZ:

El archivo resultante lo desempaquetamos con tar:

tar xf httpd-2.2.29.tar

Configuración de la compilación

La compilación tiene una serie de requisitos:

El archivo Makefile suele estar disponible en la carpeta de las fuentes.

El procedimiento habitual tiene los siguientes pasos:

  1. tar zxvf snow-2.0.3.tar.gz
  2. cd snow-2.0.3
  3. ./configure
  4. make
  5. su
  6. make install

El paquete build-essential incluye los programas y bibliotecas básicos para realizar la compilación de programas en Linux. No viene instalado por defecto.

.configure lo que hace es chequear las dependencias y adapta el código fuente a la arquitectura de la máquina. Nos instalará el programa en la ubicación definida por defecto (normalmente /usr/local/).

./configure –prefix=/usr/local/httpd nos permite definir otra ruta de instalación.

./configure –help nos muestra todos los posibles argumentos de configuración.

Compilación

make utiiliza los archivos Makefile creados por .configure para hacer la instalación

Instalación de binarios

make install

Necesario ejecutar el comando de instalación con permisos de administrador.

De acuerdo al estándar GNU, la aplicación se instalará en el directorio /usr/local por defecto.

Desinstalación de binarios:

make uninstall

Limpieza de elementos compilados:

make clean

Limpieza de elementos compilados y archivos de configuración (Makefile):

make mrproper

Ejemplo compilación e instalación de nmap

Obtenemos las fuentes de https://nmap.org/download.html

wget https://nmap.org/dist/nmap-7.91.tar.bz2

Descomprimimos:

tar xjvf nmap-7.91.tar.bz2

Obtenemos una carpeta llamada nmap-7.70

Entramos en la carpeta y ejecutamos el script configure:

./configure

Esto revisará las dependencias y generará el archivo Makefile. Si falta algo para poder realizar la configuración, dará un error indicando el problema.

Realizamos la compilación:

make

Nos convertimos en usuario con privilegios:

su

Finalmente realizamos la instalación en el sistema:

make install

Aplicación de parches

diff

diff: comando que compara 2 archivos y muestra las diferencias entre ellos. Podemos utilizar dicho comando para generar un parche.

diff programa1.c programa2.c > patch-x.y.z

patch

Comando que nos permite aplicar o retirar un parche sobre un código fuente.

Aplicar parche:

patch –pnum < path-x.y.z

Retiramos parche:

path –pnum –R < path-x.y.z

Tests

Which command would you use to apply a diff file to an original?

If the current directory is /root and the kernel source is located in /usr/src/linux, which of the following commands should be used to apply the patch /tmp/foopatch?