MANDB(8)

名称
mandb - 创建或更新手册页索引缓存

概述
mandb [-dqsucpt?V|-h|-V] [-C 文件] [manpath]
mandb [-dqsut] [-C 文件] -f 文件名 ...

描述
mandb is used to initialise or manually update index database caches. The caches contain information relevant to the current state of the manual page system and the information stored within them is used by the man-db utilities to enhance their speed and functionality. 当创建或更新 索引时，mandb 会警告错误的 ROFF .so 请求，无效的手册页名称和手册页，因为 whatis 无法解析它们。 给 mandb 提供可选的，以冒号分隔的路径会覆盖内部的系统手册页层次结构搜索路径，这些路径是从 man-db 配置文件中的信息确定的。

数据库缓存
mandb 可以编译支持以下任何一种数据库类型。
名称 | 异步 | 文件名
Berkeley db | 是 | index.bt
GNU gdbm | 是 | index.db
UNIX ndbm | 否 | index.(dir|pag)
那些提供异步更新的数据库速度更快，但代价是可能在异常中止时损坏数据。万一这种事情发生，可能要重新以 -c 选项运行 mandb 来重建数据库。

选项

-d, --debug
    打印调试信息。

-q, --quiet
    不显示警告。

-s, --no-straycats
    不花时间查找或向数据库添加有关孤立 cat 页面的信息。

-p, --no-purge
    不花时间检查删除的手册页并从数据库中清理它们。

-c, --create
    默认情况下，mandb 会尝试更新任何以前创建的数据库。如果某个数据库不存在，程序会创建它。此选项强制 mandb 删除以前的数据库并重新生成数据库，并隐含了 --no-purge。在数据库损坏或将来引入新数据库存储方案时，这一选项可能用到。

-u, --user-db
    只创建用户数据库，即使有创建系统数据库所需的写权限。

-t, --test
    对层次结构搜索路径中的手册页执行正确性检查。使用此选项时，mandb 不会更改现有的数据库。

-f, --filename
    只更新指定文件名对应的记录。此选项不作常规使用；它由 man 内部使用(以 MAN_DB_UPDATES 选项编译时)，以便查找页面是否过期。它隐含了 -p，关闭了 -c 和 -s。

-C 文件, --config-file=文件
    使用此用户配置文件代替默认的 ~/.manpath。

-?, --help
    显示用法消息，然后退出。

--usage
    打印简短的帮助消息并退出。

-V, --version
    显示版本号，然后退出。

退出状态

0   程序成功执行。

1   用法、语法或配置文件错误。

2   操作出错。

3   子进程失败。

诊断
在构建数据库时可能会显示以下警告消息。

<文件名>: 页面(章节) 的 whatis 解析失败
    从给定 <文件名> 提取 whatis 行失败。这通常是由于手册编写不当导致的。但如果出现了大量这种消息，则可能是系统包含非标准的，和 man-db whatis 解析器不兼容的手册页。请参阅 lexgrog(1) 中的 WHATIS PARSING 一节了解更多信息。

<文件名>: 是一个的无效的符号链接
    <文件名>不存在，但被一个符号链接引用。通常会给出进一步的诊断信息，识别出非法链接的 <文件名>。

<文件名>: 错误的符号链接或 ROFF `.so' 请求
    <文件名> 是指向不存在的文件的符号链接，或包含带有请求不存在文件的 ROFF。

<文件名>: 将忽略假的文件名
    <文件名> 可能是或不是有效的手册页，但它的名称是无效的。这通常是由于手册页包含章节扩展 <x> 却被放在了手册页章节 <y>。

<文件名掩码>: 扩展冲突
    通配符 <文件名掩码> 不唯一。这通常是同时存在同一手册页的压缩和非压缩版本导致的。

文件

/etc/manpath.config
    man-db 配置文件。

/var/cache/man/index.(bt|db|dir|pag)
    与 FHS 兼容的全局 索引 数据库缓存。

包含的数据库缓存的较早位置：

/usr/man/index.(bt|db|dir|pag)
    传统的全局 索引 数据库缓存。

/var/catman/index.(bt|db|dir|pag)
    替代的或 FSSTND 兼容的全局 索引 数据库缓存。

亦见
lexgrog(1), man(1), manpath(5), catman(8)

此手册页中的 WHATIS PARSING 小节现在是 lexgrog(1) 的一部分。

作者
Wilf. (G.Wilford@ee.surrey.ac.uk).
Fabrizio Polacco (fpolacco@debian.org).
Colin Watson (cjwatson@debian.org).

BUGS
https://gitlab.com/cjwatson/man-db/-/issues
https://savannah.nongnu.org/bugs/?group=man-db