2016-08-20 75 views
7

我无法让man在Alpine Linux Docker容器中工作。如何让在'高山Linux Docker容器中工作的'man'?

拉高山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根本不起作用。这种行为是不一致的和意想不到的。

+2

我建议不要安装人或任何其他额外的软件包,其将使其更大的形象。由于轻量化的集装箱化,阿尔卑斯码头船开始进入制图阶段。因此,只需安装所需的软件包或使用官方的Alpine映像(httpd,tomcat,java等),即可从本地基于Linux的计算机中引用手册页。 – Nitin

+0

够公平的。我实际上正在尝试创建自己的集装箱式GnuPG环境。在学习的过程中,“人......”有时比“......帮助”更具有洞察力。 – lukejanicke

回答

5

您需要添加

apk add mdocml-apropos 

,然后为每个包你需要的男人包

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 

因此,有一个手册页

+2

还有一个快捷方式 - 如果您想为每个软件包安装-doc子包,请运行“apk add docs”。 –

+0

我尝试过这种方法,但是'卷曲 - 手动'工作,但不是'男人卷曲'。不幸的是,'gnupg --manual'根本不起作用。 – lukejanicke

+0

@JakubJirutka感谢您的提示。 – lukejanicke

0

事实上,这与您连接到容器的方式做。我在LXD上使用了很多阿尔卑斯山,通过lxc exec container ash进行连接时,通常无法读取任何手册页。我想docker会以同样的方式将你连接到容器上。

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

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

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

注意的提示是如何su -命令后不同。另外,如果我在容器内部运行一个ssh服务器,然后通过ssh连接到这个容器,那么man完美地工作。

4

对于我来说,摆脱这种错误的:

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

我用:

export PAGER=less 

然后它

相关问题