Não é possível instalar páginas de manual no contêiner mínimo do Centos Docker

11

Eu tenho uma imagem mínima do Centos 7 Docker, e estou tentando obter algumas páginas de manual nele para ajudar na depuração do meu Dockerfile. Fora da caixa, não tem muito:

# man ls
No manual entry for ls

Por esta resposta Serverfault , eu instalei o man-pages RPM, e isso pareceu correr bem:

# yum install -y man-pages
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.vtti.vt.edu
 * extras: centos.mbni.med.umich.edu
 * updates: centos.netnitco.net
Resolving Dependencies
--> Running transaction check
---> Package man-pages.noarch 0:3.53-5.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================
 Package                  Arch                  Version                     Repository           Size
======================================================================================================
Installing:
 man-pages                noarch                3.53-5.el7                  base                5.0 M

Transaction Summary
======================================================================================================
Install  1 Package

Total download size: 5.0 M
Installed size: 4.6 M
Downloading packages:
man-pages-3.53-5.el7.noarch.rpm                                                | 5.0 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : man-pages-3.53-5.el7.noarch                                                        1/1 
  Verifying  : man-pages-3.53-5.el7.noarch                                                        1/1 

Installed:
  man-pages.noarch 0:3.53-5.el7                                                                       

Complete!

No entanto:

# man ls
No manual entry for ls

Eu usei rpm para verificar se man-pages deveria incluir a página ls man, e parece que sim:

# rpm -ql man-pages | grep -w ls
/usr/share/man/man1p/ls.1p.gz

Mas parece que não foi instalado:

# man 1p ls
No manual entry for ls in section 1p
# ls -l /usr/share/man/man1p/
total 0

E não parece estar em nenhum outro lugar no sistema de arquivos.

# find / -name ls.1\*
#

Eu posso criar arquivos em /usr/share/man/man1p/ , então provavelmente não é alguma estranheza do sistema de arquivos virtual do Docker.

A melhor parte disso é que o que eu realmente queria neste minuto era a man page do comando useradd , que nem está nesse RPM. Está em shadow-utils .

# yum whatprovides /usr/share/man/man8/useradd.8.gz
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.vtti.vt.edu
 * extras: mirror.tzulo.com
 * updates: centos.netnitco.net
2:shadow-utils-4.1.5.1-18.el7.x86_64 : Utilities for managing accounts and shadow password files
Repo        : base
Matched from:
Filename    : /usr/share/man/man8/useradd.8.gz

que já está instalado.

# yum install shadow-utils
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.vtti.vt.edu
 * extras: centos.mbni.med.umich.edu
 * updates: centos.netnitco.net
Package 2:shadow-utils-4.1.5.1-18.el7.x86_64 already installed and latest version
Nothing to do

E, de fato, os binários (por exemplo, /usr/sbin/useradd ) estão lá. Mas não as páginas do homem.

# ls -l /usr/share/man/man8/useradd.8.gz
ls: cannot access /usr/share/man/man8/useradd.8.gz: No such file or directory

Então, minhas perguntas são:

  1. Por que não consigo encontrar nenhuma das páginas do manual que deveriam estar no shadow-utils RPM, quando posso encontrar os binários?
  2. Por que a instalação do man-pages RPM (com êxito) não instala os arquivos que deveriam estar nesse RPM?

Atualização: Por resposta de Aaron Marasco e meu comentário de \uch, tentei yum reinstall shadow-utils . Assim como acontece com yum install man-pages , isso parece ser concluído com sucesso, mas não coloca arquivos em /usr/share/man/ .

    
por David Moles 03.02.2016 / 02:03

5 respostas

11

Sua imagem provavelmente tem o sinalizador de transação nodocs definido na configuração do yum (cf. /etc/yum.conf ).

Você pode removê-lo globalmente (ou na linha de comando do yum) antes de (re) instalar os pacotes para os quais deseja as páginas do manual.

Por exemplo:

yum --setopt=tsflags='' reinstall shadow-utils
    
por 18.03.2016 / 08:52
4

Nada aqui funcionou e, além disso, a resposta aceita contém um erro de digitação. Eu não tenho bastante representante para comentar lá, então estou adicionando-o aqui como uma resposta no caso de ajudar alguém.

Para instalar um pacote com páginas man use:

yum --setopt=tsflags='' install man-db

Então:

yum --setopt=tsflags='' install {your-package-name}

Ou, você pode remover permanentemente a linha do yum.conf, que impede a instalação de páginas do manual. Para fazer isso, use:

sed -i '/tsflags=nodocs/d' /etc/yum.conf

Então você pode usar yum install ou yum reinstall normalmente.

Fonte

    
por 25.12.2016 / 09:55
1

A imagem do Docker é extremamente despojada. Eu acredito que eles removem as páginas de manual depois que os RPMs estão instalados. Você pode verificar isso com rpm -V shadow-utils . Eu sei que tive problemas ao tentar usar delta RPMs para atualizar pacotes porque faltam páginas man.

Infelizmente, acho que a única maneira de obter uma página de manual para algo seria forçar a reinstalação do RPM ou extraí-los manualmente do RPM e soltá-los no lugar.

Veja também este site , eu acho.

    
por 03.02.2016 / 02:45
1

Eu sei que esta é uma pergunta antiga, mas dado o tempo que passei acompanhando isso, ela será útil para outra pessoa eventualmente.

O problema está relacionado à maneira como o RPM é configurado na imagem de encaixe, primeiro verifique se a diretiva excludedocs está listada na configuração do RPM da seguinte forma:

# rpm --showrc | grep docs

Se estiver lá, você deve encontrar o arquivo que o especifica no meu caso, ele estava sob /etc/rpm/macros.imgcreate e removê-lo

O Yum deve executar toda a instalação do homem-página conforme o esperado (dado que você também não tem o nodocs tsflag mencionado acima.

    
por 07.12.2017 / 13:52
-3
export MANPATH=/usr/share/man/fr
    
por 02.01.2018 / 16:29