在 Linux 系统管理和日常使用中,man 命令是查阅命令、函数和配置文件详细说明的 indispensable 工具,它提供了一个标准化的、离线的文档系统,帮助用户快速理解各种工具的用法、参数和示例,在某些情况下,特别是在进行最小化安装的 CentOS 系统中,man 命令本身或其对应的帮助文档可能并未被预装,本文将详细讲解在 CentOS 系统中如何安装、配置和添加 man 手册页的多种方法,涵盖从基础安装到高级自定义的完整流程。

安装基础的 man 工具和手册页
对于许多精简的服务器环境或容器镜像,man 命令可能并不存在,当你输入 man ls 时,系统可能会提示 command not found,你需要安装两个核心的软件包。
man-db:这是man命令本身所在的软件包,提供了手册页的浏览、搜索和格式化等核心功能。man-pages:这个软件包包含了 Linux 内核、GNU 工具以及 C 标准库等大量基础命令和函数的原始手册页文件。
根据你的 CentOS 版本,使用 yum(CentOS 7 及更早版本)或 dnf(CentOS 8 及更新版本,包括 Stream)来安装它们。
# 对于 CentOS 7 系统 sudo yum install man-db man-pages -y # 对于 CentOS 8 / 9 / Stream 系统 sudo dnf install man-db man-pages -y
安装完成后,你可以通过执行 man man 来验证是否安装成功,如果能够正常显示 man 命令自身的帮助文档,说明基础环境已经配置完毕。
为特定软件包补充手册页
有时,你已经安装了 man 工具,但在查阅某个特定软件(如 Nginx、PostgreSQL)的文档时,却收到 No manual entry for ... 的错误,这通常是因为该软件的手册页被打包在了一个独立的以 -doc 或 -docs 结尾的子软件包中,而你在安装主程序时并未一并安装。
以 nginx 为例,标准的安装方式如下:
sudo dnf install nginx -y
尝试 man nginx 可能会失败,你需要找到并安装对应的文档包,可以通过 search 命令来查找:

sudo dnf search nginx-doc
搜索结果通常会列出 nginx-doc 或类似的包,安装它:
sudo dnf install nginx-doc -y
安装完成后,再次执行 man nginx,你应该就能看到详细的 Nginx 配置和指令说明文档了,这个规则适用于许多大型软件,如 postgresql-doc、httpd-manual 等,养成在需要时查找并安装 -doc 包的习惯,能极大提升工作效率。
添加自定义手册页(高级用法)
当你自己编写了脚本、开发了一个小型程序或需要在团队内部共享某个工具的使用说明时,为其创建一个 man 手册页是非常专业和便捷的做法,添加自定义手册页主要分为三个步骤:编写手册页文件、放置到正确目录、更新手册页数据库。
理解手册页的章节结构
man 手册页被组织在 9 个不同的章节中,每个章节对应特定类型的内容,了解这些章节对于正确放置和编写手册页至关重要。
| 章节号 | 内容描述 | 
|---|---|
| 1 | 可在 shell 中执行的普通用户命令 | 
| 2 | 系统调用(内核提供的函数) | 
| 3 | 库调用(程序库中的函数) | 
| 4 | 特殊文件(通常位于 /dev) | 
| 5 | 文件格式和约定(如 /etc/passwd) | 
| 6 | 游戏 | 
| 7 | 杂项(宏定义包、约定等) | 
| 8 | 系统管理命令和守护进程(通常由 root 使用) | 
| 9 | 内核例程(非标准) | 
编写与放置手册页文件
手册页文件使用特定的 nroff 或 groff 宏包(如 man 宏)进行格式化,其命名格式为 命令名.章节号.gz,一个自定义命令 mytool 的用户手册(属于第1章)应命名为 mytool.1,为了节省空间,通常建议使用 gzip 压缩,即 mytool.1.gz。
编写手册页文件本身是一个复杂的过程,但你可以从现有的简单手册页(如 /usr/share/man/man1/ls.1.gz)中复制模板进行修改。

编写完成后,需要将文件放置到 man 能够搜索到的目录中,最佳实践是将其放在 /usr/local/share/man/ 下的对应章节目录中,对于 mytool.1.gz,正确的路径是:
sudo cp mytool.1.gz /usr/local/share/man/man1/
更新手册页数据库
man 命令依赖于一个缓存数据库(通常位于 /var/cache/man/)来快速定位手册页,当你添加了新的手册页文件后,需要运行 mandb 命令来更新这个数据库。
sudo mandb
mandb 会扫描所有标准的手册页目录,解析新文件并更新索引,执行完毕后,你就可以在任何位置直接使用 man mytool 来查阅自定义的帮助文档了,如果仍然找不到,可以使用 man -w mytool 来调试,它会显示 man 命令查找手册页时所使用的实际文件路径,帮助你检查路径和命名是否正确。
相关问答 (FAQs)
问题1:我已经安装了一个软件,但为什么 man 命令还是提示找不到手册页?
解答: 这种情况非常常见,主要有两个原因,第一,该软件的手册页可能被打包在一个独立的 -doc 或 -docs 后缀的软件包中,你没有安装它,请使用 yum search 软件名-doc 或 dnf search 软件名-doc 来查找并安装对应的文档包,第二,极少数情况下,软件本身就没有提供 man 手册页,可能需要查看其官方网站、GitHub 仓库的 README 文件或使用 --help 参数获取简短帮助。
问题2:我手动将一个 .gz 格式的手册页文件复制到了 /usr/share/man/man1/ 目录下,但 man 命令却无法识别,应该怎么办?
解答: 当你手动添加或删除手册页文件后,man 命令的内部索引数据库并不会自动更新,你需要以 root 权限执行 sudo mandb 命令,这个命令会重新扫描手册页目录,解析所有文件(包括你新添加的),并重建索引缓存,执行完毕后,man 命令应该就能正确找到并显示你新添加的手册页了。