「mandb(8)」-

  LINUX MANUAL PAGES

创建或者更新手册页索引缓存

命令语法格式

mandb [-dqsucpt?V] [-C file] [manpath]

mandb [-dqsut] [-C file] -f filename …

命令描述

mandb用于初始化或手动更新索引数据库缓存(通常由man维护)。缓存中包含与手册页系统当前状态相关的信息;保存在缓存中的这些信息被man-db工具用来提高速度和增强功能。

当创建或更新索引时,mandb会警告错误的ROFF .so请求、无效的手册页名称手册页,因为whatis无法解析它们。

给mandb提供可选的且以冒号分隔的路径会覆盖内部的系统手册页层次结构搜索路径,这些路径是从man-db配置文件中的信息确定的。

数据库缓存

mandb 可以编译支持以下任何一种数据库类型:

Name Type Async Filename
────────────────────────────────────────────────────────────
Berkeley db Binary tree Yes index.bt
GNU gdbm v >= 1.6 Hashed Yes index.db
GNU gdbm v < 1.6 Hashed No index.db
UNIX ndbm Hashed No 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 file, –config-file=file
使用用户配置文件file代替默认的~/.manpath

-?, –help
打印帮助消息并退出。

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

-V, –version
显示版本信息。

状态码

0 程序成功执行。

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

2 操作出错。

3 子进程失败。

问题诊断

在构建数据库时可能会显示以下警告消息,这些信息可以忽略:

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

<filename>: is a dangling symlink
<filename>不存在,但被一个符号链接引用。通常会给出进一步的诊断信息,识别出非法链接的<filename>

<filename>: bad symlink or ROFF `.so’ request
<filename>是指向不存在的文件的符号链接,或包含带有请求不存在文件的 ROFF。

<filename>: ignoring bogus filename
<filename>可能是或不是有效的手册页,但它的名称是无效的。这通常是由于手册页包含章节扩展 <x> 却被放在了手册页章节 <y>。

<filename_mask>: competing extensions
通配符<filename_mask>不唯一。这通常是同时存在同一手册页的压缩和非压缩版本导致的。除了最近的,所有的都被忽略了。

相关文件

/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)的一部分。

参考文献

  • man 8 mandb

更新日志

  • 06/29/2017 创建文章
  • 05/27/2018 更新文章内容

lexgrog