Herramientas de usuario

Herramientas del sitio


informatica:certificaciones:lpic:lpic-2:206_system_maintenance:206.1

¡Esta es una revisión vieja del documento!


206.1 Make and install programs from source

Pertenece a LPI Topic 206: System Maintenance

  • Weight: 2
  • Description: Candidates should be able to build and install an executable program from source. This objective includes being able to unpack a file of sources.
  • Key Knowledge Areas:
    • Unpack source code using common compression and archive utilities
    • Understand basics of invoking make to compile programs
    • Apply parameters to a configure script
    • Know where sources are stored by default
  • Terms and Utilities:
    • /usr/src/
    • gunzip
    • gzip
    • bzip2
    • xz
    • tar
    • configure
    • make
    • uname
    • install
    • patch

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

  • Programas interpretados: se escriben en un lenguaje de programación (perl, shell, etc) y son llamados por un interprete cada ejecución.
  • Programas compilados: se escriben en un lenguaje de programación (Pascal, C, C++) y a continuación pasa a un compilador. El compilador lee el código del programa y genera un ejecutable.

¿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:

  • tar xzf httpd-2.2.29.tar.gz
  • gunzip httpd-2.2.29.tar.gz

Bzip2:

  • tar xjf httpd-2.2.29.tar.bz2
  • bunzip2 httpd-2.2.29.tar.bz2

XZ:

  • tar Jxf httpd-2.2.29.tar.bz2
  • unxz httpd-2.2.29.tar.bz2

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:

  • Existencia de un compilador.
  • Presencia de las librerías necesarias.
  • Haber generado el archivo Makefile.

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.

Desinstalación de binarios:

make uninstall

Limpieza de elementos compilados:

make clean

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

make mrproper

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
  • -pnum: se utiliza cuando hay parches en directorios diferentes, sirve para omitir las / y la ruta superior.

Ejemplo 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

make install para hacer la instalación en el sistema.

Tests

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

  • patch > diff-file
  • patch < diff-file (Solución)
  • patch « diff-file
  • cat diff-file » kernel
  • cat diff-file « kernel

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?

  • cat /tmp/foopatch | patch -p0
  • cd /usr/src/linux; cat/tmp/foopatch | patch -p0
  • cd /usr/src/linux; cat/tmp/foopatch | patch
  • cd /usr/src/linux; patch -p1 </tmp/foopatch (Solución)
  • cd /usr/src/linux; patch -p1 >/tmp/foopatch
informatica/certificaciones/lpic/lpic-2/206_system_maintenance/206.1.1617892399.txt.gz · Última modificación: por tempwin