当使用debian:stretch
Docker 镜像,/usr/share/man/
目录已经包含很多联机帮助页, 和man
可以轻松安装以查看它们:
$ apt-get update
$ apt-get install man
$ man ls
$ man cp
然而,当使用debian:stretch-slim
Docker 镜像,该/usr/share/man/
目录故意为空:
这些标签是提供更精简基础的实验(删除容器中通常不需要的一些额外文件,例如手册页和文档)
如何填充该/usr/share/man/
目录,以便可以用来man
查看核心实用程序的联机帮助页(例如cat
、chmod
、chown
、cp
、ls
、mkdir
、mv
、rm
、tail
等)?
答案1
这coreutils
包裹/usr/share/man/man1/
使用核心实用程序的联机帮助页填充目录。
然而,仅仅运行apt-get update
是apt-get install coreutils
不够的,因为dpkg
已经配置为排除/usr/share/man/*
,使用path-exclude
在/etc/dpkg/dpkg.cfg.d/docker
(参见这里和这里)。
因此,第一步是从/etc/dpkg/dpkg.cfg.d/docker
文件中删除该行。一种方法是使用sed
:
$ sed -i '/path-exclude \/usr\/share\/man/d' /etc/dpkg/dpkg.cfg.d/docker
dpkg
也曾被配置为排除/usr/share/groff/*
,这也需要撤消(因为groff
需要渲染联机帮助页):
$ sed -i '/path-exclude \/usr\/share\/groff/d' /etc/dpkg/dpkg.cfg.d/docker
现在/usr/share/man/man1/
需要从包中填充该目录coreutils
。由于coreutils
已经安装在debian:stretch-slim
Docker镜像中,因此需要重新安装:
$ apt-get update
$ apt-get install --reinstall coreutils
最后man
就可以安装并可以查看manpages了:
$ apt-get install man
$ man ls
$ man cp
安装起来也很有帮助less
,它将man
用于对联机帮助页进行分页,并提供比默认更好的体验more
分页器:
$ apt-get install less
相关问题:
答案2
如果您想要包含手册页,请不要使用
debian:stretch-slim
版本,
而是选择常规的
debian:stretch
人故意在精简版中节省磁盘空间。