如何让'man'在Alpine Linux Docker容器中工作?

时间:2016-08-20 14:30:14

标签: linux docker man alpine

我无法让man在Alpine Linux Docker容器中工作。

拉起Alpine Linux并启动一个容器。

docker pull alpine:latest
docker run -t -i alpine /bin/ash

从所有远程存储库更新存储库索引。

apk update

安装manman-pages

apk add man man-pages

安装软件包及其文档。

apk add curl
apk add curl-doc

尝试查看手册页。

/ # man curl
/usr/share/man/mandoc.db: No such file or directory
man: outdated mandoc.db lacks curl(1) entry,
     consider running  # makewhatis /usr/share/man
more: -s: No such file or directory
/ # 

什么?

更新

按照@ EugenMayer的建议添加mdicml-apropos,我可以curl --manual开始工作,但不能man curl。不幸的是,gnupg --manual根本不起作用。此行为不一致且意外。

3 个答案:

答案 0 :(得分:5)

您需要添加

apk add mdocml-apropos

然后对于每个包,你需要

的man包
apk add curl-doc

然后你就像你已经做过那样去使用男人

apk add man man-pages mdocml-apropos

这个的来源(加上那里缺少的mdocml-apropos)是https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#Why_don.27t_I_have_man_pages_or_where_is_the_.27man.27_command.3F但是很有趣,我不能让它自己工作。

还尝试export TERM=xterm查看iteractivity中的内容是否发布,但事实并非如此。

还手动尝试了makewhatis /usr/share/man,但没有成功。

有趣的是:

ls  -la /usr/share/man/man1/curl-config.1.gz
-rw-r--r--    1 root     root          1687 Aug  4 15:07 /usr/share/man/man1/curl-config.1.gz

所以有一个手册页

答案 1 :(得分:4)

对我来说,要摆脱这个错误:

man man
more: -s: No such file or directory

我用:

export PAGER=less

然后它起作用

答案 2 :(得分:0)

实际上,这与您连接到容器的方式有关。我在LXD上使用alpine很多,通过lxc exec container ash连接时通常无法读取任何手册页。我想docker会以同样的方式将你连接到容器。

$ lxc exec alp03 ash
~ # man man
more: -s: No such file or directory

所以你可以使用su -,然后你就可以使用man:

~ # su -
alp03:~# man man
MAN(1P)                    POSIX Programmer's Manual
(...)

注意su -命令后提示符的不同。

另外,如果我在容器内运行ssh服务器,然后通过ssh连接到这个容器,那么man工作正常。