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

问题描述 投票:0回答:5

我无法让

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
根本不起作用。这种行为是不一致且出乎意料的。

linux docker manpage alpine-linux
5个回答
6
投票

您需要添加

apk add mdocml-apropos

然后对于每个包,您都需要其 man 包

apk add curl-doc

之后你就可以使用 man 了,就像你已经做的那样

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

所以有一个联机帮助页


5
投票

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

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

我用:

export PAGER=less

然后就可以了


3
投票


这似乎是一个很老的问题,但无论如何我都会发布我的答案,也许它将来对其他人有用。
我尝试了 Alpine Linux v3.15 Docker 容器的解决方案,它有效。

重现步骤:

  1. docker pull alpine:3.15

  2. docker run --rm --name alpine -it alpine:3.15 /bin/sh

  3. apk add curl

  4. apk add curl-doc

  5. 输入

    man curl
    ,您将得到以下错误:

    /bin/sh: man: not found
    
  6. 为了解决上述错误,请输入:

    apk add mandoc man-pages

  7. 您应该能够查看和浏览

    curl
    的手册页!

如果您仍然遇到错误,请输入以下命令:

export PAGER=less
,然后尝试再次向上查看
curl
的手册页。

其他资源:在 alpine linux docker 容器中安装

man


0
投票

事实上,这与你连接到容器的方式有关。我经常将 alpine 与 LXD 一起使用,并且通过

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 就可以完美工作。


0
投票

更新的解决方案:

在 docker 容器中,运行命令

apk update
apk add mandoc man-pages

这将添加

man
命令以及手册页。尝试安装
man
软件包,只是说该软件包不存在。

/ # apk add man man-pages 
ERROR: unable to select packages:
  man (no such package):
    required by: world[man]
/ # man

现在您可以通过指定您想要查看的手册页来查找手册页,例如:

man strerror
© www.soinside.com 2019 - 2024. All rights reserved.