Skip to content

Docker镜像里为什么Linux无法安装Man Pages?

引言

Man Pages是Linux系统常用的在线文档手册。

常说在Linux里不需要记住软件命令的用法,只要会找男人就行了,指的就是查看这个man pages文档。

Docker是比较常用的容器,常用于部署应用或作为开发环境,但一般的Docker镜像为了减少体积,不会带有Man Pages文档手册。

有时候哪怕按照一般的做法使用yum安装了man-pages软件包,发现还是没有按预期安装文档,这是怎么回事呢?

man pages文档手册

一般情况下,这样安装man-pages软件包以下载文档手册的:

$ yum install man man-pages man-db

$ mandb # 更新man文档手册的索引信息

$ man strcpy # 查看strcpy文档手册

假设现在要查看nlopt相关的文档,但不知道哪个软件包包含有这份文档手册,则可以这样查看:

$ man nlopt
No manual entry for nlopt

$ yum whatprovides */nlopt.*.gz

NLopt-devel-2.4.2-2.el7.x86_64 : Development files for NLopt
Repo        : epel
Matched from:
Filename    : /usr/share/man/man3/nlopt.3.gz

$ yum install NLopt-devel

or

$ yum reinstall NLopt-devel

$ man -w nlopt # 找到文档具体位置
/usr/share/man/man3/nlopt.3.gz

$ man nlopt # 查看文档

$ man 3 nlopt

找到软件包名字后,安装软件就会有下载对应文档,进而可以通过man命令查看了。

当然有的软件包提供的文档不是man-page格式,而是info格式,那就另当别论。

yum无法下载文档

前面讲到Docker镜像为了减少大小,一般是不会下载软件文档的,即使后面重新安装了软件,会发现软件虽然安装了但文档却没有下载,这是通过/etc/yum.conf来设置的:

[main]
//...
tsflags=nodocs

将这行配置注释后,使用yum安装软件时就会自动下载文档了;其实这个选项是传递给了rpm命令,参看: yum-plugin-tsflags