Linux From Scratch: Versión 4.1 | ||
---|---|---|
Anterior | Capítulo 6. Instalación de los programas del sistema base | Siguiente |
Estimación del tiempo de construcción: 0.10 SBU Estimación del espacio necesario en disco: 3 MB |
Última versión comprobada: 4.1.
El paquete Findutils contiene pogramas para encontrar ficheros, tanto al vuelo (haciendo una búsqueda recursiva en vivo a través de los directorios y mostrando sólo los ficheros que cumplan las especificaciones) o mediante una búsqueda a través de una base de datos.
Findutils instala lo siguiente:
Última versión comprobada: 4.1.
Bash: sh
Binutils: ar, as, ld, ranlib
Diffutils: cmp
Fileutils: chmod, cp, install, mv, rm
Grep: egrep, grep
Gcc: cc1, collect2, cpp0, gcc
Make: make
Patch: patch
Sed: sed
Sh-utils: basename, date, echo, hostname
Textutils: cat, tr
El paquete Findutils es bastante antiguo y tiene problemas al compilarlo con versiones recientes de Glibc (Glibc-2.0.x y superiores). Necesitas aplicar el parche que soluciona estos conflictos:
Findutils declara una función llamada basename, pero este nombre de función ya es utilizado por las librerías estandar de C. Este parche cambia la función basename de Findutils para que pase a llamarse basename2.
Findutils usa las librerías de una forma incorrecta. Declara funciones de librería para decirle al compilador cuál será el nombre de la función cuando las librerías sean enlazadas. Dicha sintaxis es inválida, provocando advertencias y errores del compilador. Este parche elimina la sintaxis incorrecta.
Todos los paquetes GNU deben usar una macro llamada _GNU_SOURCE. Esta macro hace que se incluyan las declaraciones de las funciones de extensión de la librería GNU para que el compilador pueda detectar con facilidad los conflictos de nombres entre funciones. Este parche agrega la macro al código fuente.
patch -Np1 -i ../findutils-4.1.patch |
Hay un error en el fichero locate.c de Findutils que provoca una violación de segmento al encontrarse con rutas demasiado largas. El problema lo causa la función get_short() al calcular números negativos de forma incorrecta. Este parche soluciona dicho error.
patch -Np1 -i ../findutils-4.1-segfault.patch |
Prepara Findutils para su compilación:
./configure --prefix=/usr |
Por defecto, la base de datos de updatedb se encuentra en /usr/var. Para hacer que la localización del fichero locatedb cumpla con el FHS, pásale la opción localstatedir=/var/lib/misc a los dos comandos make que vienen a continuación.
Continúa compilando el paquete:
make libexecdir=/usr/bin |
Y termina instalando el paquete:
make libexecdir=/usr/bin install |