Pertenece a LPI Topic 206: System Maintenance
/usr/src/gunzipgzipbzip2xztarconfiguremakeunameinstallpatchLos 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.
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
Las fuentes de los programas suelen venir empaquetadas y compprimidas en diferentes formatos.
Utilizaremos tar o las herramientas especificas de cada formato
GZIP:
tar zxf httpd-2.2.29.tar.gzgunzip httpd-2.2.29.tar.gzBzip2:
tar jxf httpd-2.2.29.tar.bz2bunzip2 httpd-2.2.29.tar.bz2XZ:
tar Jxf httpd-2.2.29.tar.bz2unxz httpd-2.2.29.tar.bz2
El archivo resultante lo desempaquetamos con tar:
tar xf httpd-2.2.29.tar
La compilación tiene una serie de requisitos:
Makefile.
El archivo Makefile suele estar disponible en la carpeta de las fuentes.
El procedimiento habitual tiene los siguientes pasos:
tar zxvf snow-2.0.3.tar.gzcd snow-2.0.3./configuremakesumake 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.
make utiiliza los archivos Makefile creados por .configure para hacer la instalación
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
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
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
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.Which command would you use to apply a diff file to an original?
patch > diff-filepatch < diff-file (Solución)patch << diff-filecat diff-file >> kernelcat diff-file << kernelIf 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 -p0cd /usr/src/linux; cat/tmp/foopatch | patch -p0cd /usr/src/linux; cat/tmp/foopatch | patchcd /usr/src/linux; patch -p1 </tmp/foopatch (Solución)cd /usr/src/linux; patch -p1 >/tmp/foopatch