Centos – Can’t install man pages on minimal Centos Docker container

centosdockermanrpm

I have a minimal Centos 7 Docker image, and I'm trying to get some man pages on it to help in debugging my Dockerfile. Out of the box, it doesn't have much:

# man ls
No manual entry for ls

Per this Serverfault answer, I installed the man-pages RPM, and that seemed to go fine:

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

However:

# man ls
No manual entry for ls

I used rpm to check that man-pages was supposed to include the ls man page, and it looks like it does:

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

But it doesn't look like it was actually installed:

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

And it doesn't seem to be anywhere else on the filesystem, either.

# find / -name ls.1\*
#

I can create files in /usr/share/man/man1p/, so it's probably not some Docker virtual filesystem weirdness.

The best part of this is that what I really wanted right this minute was the man page for the useradd command, which isn't even in that RPM. It's in 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

Which is already installed.

# 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

And, in fact, the binaries (e.g. /usr/sbin/useradd) are there. But not the man pages.

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

So my questions are:

  1. Why can't I find any of the man pages that are supposed to be in the shadow-utils RPM, when I can find the binaries?
  2. Why doesn't (successfully) installing the man-pages RPM install the files that are supposed to be in that RPM?

Update: Per Aaron Marasco's answer and msuchy's comment, I tried yum reinstall shadow-utils. As with yum install man-pages, this appears to complete successfully, but doesn't actually put any files in /usr/share/man/.

Best Answer

Your image probably has the nodocs transaction flag set in the yum configuration (cf. /etc/yum.conf).

You can remove it globally (or at the yum command line) before (re-)installing the packages you want the man pages for.

For example:

yum --setopt=tsflags='' reinstall shadow-utils
Related Question