6.58. Findutils-4.6.0

Le paquet Findutils contient des programmes de recherche de fichiers. Ces programmes sont fournis pour rechercher récursivement dans une hiérarchie de répertoires et pour créer, maintenir et chercher dans une base de données (souvent plus rapide que la recherche récursive mais moins fiable si la base de données n'a pas été mise à jour récemment).

Temps de construction approximatif: 0.6 SBU
Espace disque requis: 51 Mo

6.58.1. Installation de Findutils

D'abord supprimez un test qui peut boucler indéfiniment sur certaines machines :

sed -i 's/test-lock..EXEEXT.//' tests/Makefile.in

Ensuite, effectuez quelques corrections requises avec glibc-2.28 et supérieur :

sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c
sed -i '/unistd/a #include <sys/sysmacros.h>' gl/lib/mountlist.c
echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h

Préparez la compilation de Findutils :

./configure --prefix=/usr --localstatedir=/var/lib/locate

Voici la signification de l'option de configure :

--localstatedir

Cette option modifie l'emplacement de la base de données locate pour qu'elle soit dans /var/lib/locate, pour être compatible avec FHS.

Compilez le paquet :

make

Pour tester les résultats, lancez :

make check

Installez le paquet :

make install

Certains scripts du paquet LFS-Bootscripts dépendent de find. Comme /usr peut ne pas être disponible lors des premières étapes du démarrage, ce programme doit être sur la partition racine. Le script updatedb doit aussi être modifié pour corriger un chemin explicite :

mv -v /usr/bin/find /bin
sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb

6.58.2. Contenu de Findutils

Programmes installés: find, locate, updatedb et xargs

Descriptions courtes

find

Cherche dans les hiérarchies de répertoires donnés les fichiers correspondant à un critère spécifié

locate

Recherche à travers la base de données des noms de fichiers et renvoie les noms contenant une certaine chaîne ou correspondant à un certain modèle

updatedb

Met à jour la base de données locate ; Il parcourt le système de fichiers entier (en incluant les autres systèmes de fichiers actuellement montés, sauf si le contraire est spécifié) et place tous les noms de fichiers qu'ils trouvent dans la base de données

xargs

Peut être utilisé pour lancer une commande donnée sur une liste de fichiers