6.58. Findutils-4.6.0

Findutils 软件包包含用于查找文件的程序。 这些程序能够递归地搜索目录树,以及创建、维护和搜索数据库 (一般比递归搜索快,但在数据库最近没有更新时不可靠)。

估计编译时间: 0.6 SBU
需要硬盘空间: 51 MB

6.58.1. 安装 Findutils

首先,禁用一个在某些机器上会无限循环的测试:

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

然后,进行 glibc-2.28 和更高版本要求的一些修补:

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 数据库的位置改为 /var/lib/locate, 以与 FHS 兼容。

编译该软件包:

make

运行以下命令以测试编译结果:

make check

安装该软件包:

make install

BLFS 及 BLFS 之外的一些软件包预期 find 程序在 /bin 中,因此要保证它被放置在那里:

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

6.58.2. Findutils 的内容

安装的程序: find, locate, updatedb, 以及 xargs

简要描述

find

在给定目录树中搜索满足给定条件的文件

locate

在文件名数据库中进行搜索, 报告包含特定字符串或匹配特定模式的文件名

updatedb

更新 locate 数据库; 它扫描整个文件系统(包括当前挂载的其他文件系统, 除非被告知不这样做),并把找到的所有文件名加入数据库

xargs

可以将给定命令作用于一个列表中的所有文件