我无法让man
在Alpine Linux Docker容器中工作。
拉起Alpine Linux并启动一个容器。
docker pull alpine:latest
docker run -t -i alpine /bin/ash
从所有远程存储库更新存储库索引。
apk update
安装man
和man-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
根本不起作用。此行为不一致且意外。
答案 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工作正常。