2016-08-20 77 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 

然後它

相關問題