2016-08-20 2 views
7

Ich kann man nicht in einem Alpine Linux Docker Container arbeiten.Wie man 'Mann' in einem Alpine Linux Docker Container arbeiten kann?

Ziehen Sie Alpine Linux und starten Sie einen Container.

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

Aktualisieren Sie die Repository-Indizes von allen Remote-Repositorys.

apk update 

Installieren man und man-pages.

apk add man man-pages 

Installieren Sie ein Paket und seine Dokumentation.

apk add curl 
apk add curl-doc 

Versuchen Sie, die man-Seiten anzuzeigen.

/ # 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 
/# 

Was?


aktualisieren

@ Beratung EugenMayer der Nach mdicml-apropos hinzufügen möchten, kann ich curl --manual aber nicht man curl zu arbeiten. Leider funktioniert gnupg --manual überhaupt nicht. Dieses Verhalten ist inkonsistent und unerwartet.

+2

Ich würde vorschlagen, nicht den Menschen oder andere zusätzliche Pakete zu installieren, die wird es größeres Bild machen. Der Alpine Docker kam aufgrund der leichten Containerisierung ins Spiel. Installieren Sie also einfach die benötigten Pakete oder verwenden Sie offizielle Alpine-Images (httpd, tomcat, java, etc). Sie können Man-Pages von Ihrem lokalen Linux-basierten Rechner beziehen. – Nitin

+0

Fair genug. Ich versuche tatsächlich, meine eigene Container-GnuPG-Umgebung zu erstellen. Im Lernprozess ist "Mann ..." manchmal aufschlussreicher als "... - Hilfe". – lukejanicke

Antwort

5

Sie benötigen

apk add mdocml-apropos 

und dann für jedes Paket, müssen Sie die Mann-Pakete hinzufügen für

apk add curl-doc 

und Sie sind gesetzt Mann zu gehen, nachdem zu bedienen, wie Sie bereits

tat
apk add man man-pages mdocml-apropos 

Die Quelle dafür (plus die mdocml-apropos, die dort fehlt) ist https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#Why_don.27t_I_have_man_pages_or_where_is_the_.27man.27_command.3F aber interessanterweise kann ich es nicht selbst arbeiten.

Auch versucht zu export TERM=xterm zu sehen, ob das in iteractivity Problem ist, aber es ist nicht.

Auch versucht makewhatis /usr/share/man manuell, aber kein Erfolg.

Interessanter:

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 

So gibt es eine Manpage ist

+2

Es gibt auch eine Verknüpfung - wenn Sie -Doc-Unterpaket für jedes Paket installieren möchten, führen Sie 'apk add docs' aus. –

+0

Ich habe es versucht und 'curl --manual' funktioniert, aber nicht' man curl'. Leider funktioniert 'gnupg --manual' überhaupt nicht. – lukejanicke

+0

@JakubJirutka Danke für diesen Tipp. – lukejanicke

0

In der Tat hat dies mit der Art und Weise zu tun, Sie mit dem Behälter verbunden sind. Ich benutze alpine viel mit LXD und kann generell keine man-Seite lesen, wenn ich über lxc exec container ash verbunden bin. Ich nehme an, Docker verbindet dich auf die gleiche Weise mit dem Container.

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

So können Sie su -, verwenden und dann werden Sie in der Lage sein, Menschen zu nutzen:

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

Beachten Sie, wie die Aufforderung nach dem su - Befehl unterscheidet.

Auch wenn ich einen SSH-Server innerhalb des Containers und dann eine Verbindung zu diesem Container über SSH, dann funktioniert Mann perfekt.

4

Für mich wird man von diesen Fehler beseitigen:

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

Ich benutze:

export PAGER=less 

dann funktioniert es

Verwandte Themen