6.58. Findutils-4.6.0

Findutils 软件包包含查找文件的程序。这些程序提供递归搜索目录树、创建、管理以及搜索数据库(通常比递归式的 find 要快,但如果数据库最近没有更新的话结果不可靠)。

大致构建用时: 0.7 SBU
所需磁盘空间: 52 MB

6.58.1. 安装 Findutils

首先,抑制测试中可能在某些机器中出现的无限循环:

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

然后,对应 glibc-2.28 或更高版本 glibc 的需求做一些修复:

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

准备编译 Findutils:

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

配置选项的含义:

--localstatedir

该选项改变 locate 数据库的位置为 FHS 兼容的 /var/lib/locate

编译软件包:

make

用以下命令测试结果:

make check

安装软件包:

make install

LFS-Bootscripts 包中的部分脚本依赖于 find。由于 /usr 在启动的早期阶段可能不可用,该程序需要被放置在根分区。updatedb 脚本也需要修改,以明确的路径更正:

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

6.58.2. Findutils 软件包内容

安装的程序: find, locate, updatedb, 和 xargs
安装的目录: /var/lib/locate

简要介绍

find

查找指定目录树中匹配特定要求的文件

locate

搜索文件名称数据库并报告包含给定字符串或匹配给定模式的文件名称

oldfind

老版本的 find,使用一个不同的算法

updatedb

更新 locate 数据库; 它搜索整个文件系统(包括已挂载的其它文件系统,除非指定排除) 并把找到的每个文件名插入到数据库

xargs

对一系列文件运行给定命令