Не удается установить man-страницы на минимальном контейнере Docker Centos

У меня минимальное изображение док-станции Centos 7, и я пытаюсь получить некоторые справочные страницы, чтобы помочь в отладке моего файла Docker. Из коробки это не так много:

# man ls No manual entry for ls 

По этому ответу на Serverfault я установил RPM man-pages , и это выглядело хорошо:

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

Однако:

 # man ls No manual entry for ls 

Я использовал rpm чтобы проверить, что man-pages должны были включать страницу ls man, и выглядит так:

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

Но похоже, что он не был установлен:

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

И, похоже, в файловой системе это не похоже нигде.

 # find / -name ls.1\* # 

Я могу создавать файлы в /usr/share/man/man1p/ , поэтому, вероятно, это не какая-то странная виртуальная файловая система Docker.

Самая лучшая часть этого – то, что я действительно хотел в эту минуту, было man-страницей для команды useradd , которая даже не в этом RPM. Это в 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 

Который уже установлен.

 # 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 

И, фактически, существуют двоичные файлы (например, /usr/sbin/useradd ). Но не страницы человека.

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

Поэтому мои вопросы:

  1. Почему я не могу найти какую-либо из страниц man, которые должны находиться в RPM shadow-utils , когда я могу найти двоичные файлы?
  2. Почему (успешно) установка RPM man-pages устанавливает файлы, которые должны быть в этом RPM?

Обновление: за ответ Аарона Мараско и комментарий Мисши , я попробовал yum reinstall shadow-utils . Как и в случае с yum install man-pages , это, похоже, завершается успешно, но на самом деле не помещает файлы в /usr/share/man/ .

Вероятно, ваше изображение имеет nodocs транзакции nodocs установленный в конфигурации yum (см. /etc/yum.conf ).

Вы можете удалить его по всему миру (или в командной строке yum) до (повторной) установки пакетов, для которых вы хотите использовать man-страницы.

Например:

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

Ничего здесь не работало, и, кроме того, принятый ответ содержит опечатку. Мне не хватает Rep, чтобы комментировать там, поэтому я добавляю его здесь как ответ, если он кому-то помогает.

Для установки пакета с man-страницами используйте:

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

Затем:

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

Или вы можете навсегда удалить строку из yum.conf, которая предотвращает установку man-страниц. Для этого используйте:

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

Затем вы можете использовать yum install или yum reinstall нормально.

Источник

Изображение Docker очень сильно удалено. Я считаю, что они удаляют страницы руководства после установки RPM. Вы можете проверить это с помощью rpm -V shadow-utils . Я знаю, что у меня были проблемы с попыткой использовать RPM delta для обновления пакетов, потому что страницы руководства отсутствуют.

К сожалению, я думаю, что единственным способом получить справочную страницу для чего-то будет принудительное переустановить RPM или вручную извлечь их из RPM и оставить их на месте.

Смотрите также этот сайт, я думаю.