Tengo una imagen mínima de Docker de Centos 7, y estoy tratando de obtener algunas páginas de manual para ayudar a depurar mi Dockerfile. Fuera de la caja, no tiene mucho:
# man ls
No manual entry for ls
Según esta respuesta de Serverfault , instalé el man-pages
RPM, y eso pareció funcionar bien:
# 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!
Sin embargo:
# man ls
No manual entry for ls
Solía rpm
comprobar que man-pages
se suponía que debía incluir la ls
página de manual, y parece que sí:
# rpm -ql man-pages | grep -w ls
/usr/share/man/man1p/ls.1p.gz
Pero no parece que se haya instalado realmente:
# man 1p ls
No manual entry for ls in section 1p
# ls -l /usr/share/man/man1p/
total 0
Y tampoco parece estar en ningún otro lugar del sistema de archivos.
# find / -name ls.1\*
#
Puedo crear archivos /usr/share/man/man1p/
, por lo que probablemente no sea una rareza del sistema de archivos virtual de Docker.
La mejor parte de esto es que lo que realmente quería en este momento era la página del useradd
comando man , que ni siquiera está en ese RPM. Está en 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 ya 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
Y, de hecho, los binarios (por ejemplo /usr/sbin/useradd
) están ahí. Pero no las páginas del 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
Entonces mis preguntas son:
- ¿Por qué no puedo encontrar ninguna de las páginas de manual que se supone que están en el
shadow-utils
RPM, cuando puedo encontrar los binarios? - ¿Por qué la instalación (exitosa) del
man-pages
RPM no instala los archivos que se supone que están en ese RPM?
Actualización: Por la respuesta de Aaron Marasco y comentario de msuchy , he intentado yum reinstall shadow-utils
. Al igual que con yum install man-pages
, esto parece completarse con éxito, pero en realidad no coloca ningún archivo /usr/share/man/
.
man-pages
paquete no tenían páginas de manual. La solución fue reinstalar dichos paquetes, por ejemplo,yum reinstall yum rpm
para cubrir esos dos.Respuestas:
Su imagen probablemente tenga el
nodocs
indicador de transacción establecido en la configuración de yum (cf./etc/yum.conf
).Puede eliminarlo globalmente (o en la línea de comando yum) antes de (re) instalar los paquetes para los que desea las páginas de manual.
Por ejemplo:
fuente
--setopt=tsflags=''
como se sugiere en la respuesta de South-Summit ? (=
para-
)useradd
(al que se hizo referencia en la pregunta).Nada aquí funcionó y, además, la respuesta aceptada contiene un error tipográfico. No tengo suficiente representante para comentar allí, así que lo agrego aquí como respuesta en caso de que ayude a alguien.
Para instalar un paquete con páginas man use:
yum --setopt=tsflags='' install man-db
Luego:
yum --setopt=tsflags='' install {your-package-name}
O bien, puede eliminar permanentemente la línea de yum.conf que impide la instalación de páginas de manual. Para hacer esto, use:
sed -i '/tsflags=nodocs/d' /etc/yum.conf
Entonces puedes usar
yum install
oyum reinstall
normalmente.Fuente
fuente
sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
Sé que esta es una vieja pregunta, pero dado el tiempo que he pasado rastreando esto, eventualmente será útil para otra persona.
El problema está relacionado con la forma en que RPM está configurado en la imagen acoplable, primero verifique si la
excludedocs
directiva aparece en la configuración de RPM de la siguiente manera:Si está allí, debe encontrar el archivo que lo especifica en mi caso,
/etc/rpm/macros.imgcreate
y eliminarloA continuación, Yum debe realizar toda la instalación de la página de manual como se esperaba (dado que tampoco tiene lo
nodocs
tsflag
mencionado anteriormente.fuente
La imagen de Docker está extremadamente despojada. Creo que eliminan las páginas de manual después de instalar los RPM. Puedes verificar esto con
rpm -V shadow-utils
. Sé que he tenido problemas al tratar de usar RPM delta para actualizar paquetes porque faltan las páginas de manual.Lamentablemente, creo que la única forma de obtener una página de manual para algo sería forzar la reinstalación del RPM o extraerlos manualmente del RPM y colocarlos en su lugar.
Ver también este sitio , supongo.
fuente
yum reinstall shadow-utils
lo arreglaráman-pages
instale correctamente?man-pages
.fuente