Eu tenho uma imagem mínima do Centos 7 Docker e estou tentando obter algumas páginas de manual 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 , instalei o man-pages
RPM, e isso pareceu funcionar 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!
Contudo:
# man ls
No manual entry for ls
Eu costumava rpm
verificar man-pages
se deveria incluir a ls
página de manual e parece que sim:
# rpm -ql man-pages | grep -w ls
/usr/share/man/man1p/ls.1p.gz
Mas não parece que ele foi realmente instalado:
# man 1p ls
No manual entry for ls in section 1p
# ls -l /usr/share/man/man1p/
total 0
E também não parece estar em nenhum outro lugar do sistema de arquivos.
# find / -name ls.1\*
#
Eu posso criar arquivos /usr/share/man/man1p/
, então provavelmente não é uma esquisitice do sistema de arquivos virtual do Docker.
A melhor parte disso é que o que eu realmente queria neste minuto foi a página de manual do useradd
comando, que nem está nesse RPM. Está dentro 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
O qual 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 de manual.
# 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:
- Por que não consigo encontrar nenhuma das páginas de manual que deveriam estar no
shadow-utils
RPM, quando encontro os binários? - Por que a instalação do
man-pages
RPM (com sucesso) não instala os arquivos que deveriam estar nesse RPM?
Atualização: Por resposta de Aaron Marasco e comentário de msuchy , tentei yum reinstall shadow-utils
. Assim como yum install man-pages
, isso parece ser concluído com êxito, mas na verdade não coloca nenhum arquivo /usr/share/man/
.
man-pages
pacote não tinham páginas de manual. A solução foi reinstalar esses pacotes, por exemplo,yum reinstall yum rpm
para cobrir esses dois.Respostas:
Sua imagem provavelmente tem o
nodocs
sinalizador de transação definido na configuração 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 de manual.
Por exemplo:
fonte
--setopt=tsflags=''
o sugerido na resposta da cúpula sul ? (=
for-
)useradd
(que foi referenciado na pergunta).Nada aqui funcionou e, além disso, a resposta aceita contém um erro de digitação. Eu não tenho representante suficiente para comentar lá, por isso estou adicionando aqui como resposta, caso ajude alguém.
Para instalar um pacote com páginas de manual, 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, o que impede a instalação das páginas de manual. Para fazer isso, use:
sed -i '/tsflags=nodocs/d' /etc/yum.conf
Então você pode usar
yum install
ouyum reinstall
normalmente.Fonte
fonte
sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
Sei que essa é uma pergunta antiga, mas, dado o tempo que passei acompanhando isso, será útil para outra pessoa eventualmente.
O problema está relacionado à maneira como o RPM é configurado na imagem do docker, verifique primeiro se a
excludedocs
diretiva está listada na configuração do RPM da seguinte maneira:Se estiver lá, você deve encontrar o arquivo que o especifica no meu caso, estava abaixo
/etc/rpm/macros.imgcreate
e removê-loO Yum deve executar toda a instalação da página de manual conforme o esperado (já que você também não possui o
nodocs
tsflag
mencionado acima.fonte
A imagem do Docker é extremamente reduzida. Eu acredito que eles removem as páginas de manual após a instalação dos RPMs. Você pode verificar isso com
rpm -V shadow-utils
. Sei que tive problemas ao tentar usar RPMs delta para atualizar pacotes porque as páginas de manual estão ausentes.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.
fonte
yum reinstall shadow-utils
vai consertar isso.man-pages
instalação correta?man-pages
.fonte