MANDB(8)

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

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

描述
mandb 用于初始化或手动更新 索引 数据库缓存(通常由 man 维护)。缓存包含与手册页系统当前状态相关的信息；保存在缓存中的这些信息被 man-db 工具用来提高速度和增强功能。 当创建或更新 索引时，mandb 会警告错误的 ROFF .so 请求，无效的手册页名称和手册页，因为 whatis 无法解析它们。 给 mandb 提供可选的，以冒号分隔的路径会覆盖内部的系统手册页层次结构搜索路径，这些路径是从 man-db 配置文件中的信息确定的。

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

选项

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

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

-s, --no-straycats
    不花时间查找或向数据库添加有关野猫(stray cats)的信息。

-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/man_db.conf
    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).