У меня есть минимальный образ Centos 7 Docker, и я пытаюсь получить на нем несколько справочных страниц, которые помогут отладить мой Dockerfile. Из коробки не так много:
# man ls
No manual entry for ls
Согласно этому ответу Serverfault , я установил man-pages
RPM, и все прошло нормально:
# 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
справочную страницу, и выглядит так:
# 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.
Самое приятное в этом то, что я действительно хотел прямо сейчас - это справочная страница для 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
Итак, мои вопросы:
- Почему я не могу найти какие-либо справочные страницы, которые должны быть в
shadow-utils
RPM, когда я могу найти двоичные файлы? - Почему (успешно) установка
man-pages
RPM не устанавливает файлы, которые должны быть в этом RPM?
Обновление: за ответ Аарона Мараско и комментарий Мсучи я попытался yum reinstall shadow-utils
. Как и в случае yum install man-pages
, это, кажется, завершается успешно, но фактически не помещает никаких файлов /usr/share/man/
.
man-pages
установки, не имеют man-страниц. Решением было переустановить такие пакеты, например,yum reinstall yum rpm
чтобы покрыть эти два.Ответы:
Возможно, в вашем изображении установлен
nodocs
флаг транзакции в конфигурации yum (ср./etc/yum.conf
).Вы можете удалить его глобально (или в командной строке yum) перед (пере) установкой пакетов, для которых вы хотите man-страницы.
Например:
источник
--setopt=tsflags=''
как предложено в ответе саммита на юг ? (=
для-
)useradd
(на которую ссылались в вопросе).Ничто здесь не сработало, и, кроме того, принятый ответ содержит опечатку. Мне не хватает 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
нормально.Источник
источник
sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
Я знаю, что это старый вопрос, но, учитывая время, которое я потратил на его отслеживание, в конечном итоге он пригодится кому-то еще.
Проблема связана с тем, как RPM настроен в образе докера, сначала проверьте,
excludedocs
указана ли директива в конфигурации RPM следующим образом:Если он там, то вы должны найти файл, в котором он указан, в моем случае он был
/etc/rpm/macros.imgcreate
и удалить егоЗатем Yum должен выполнить всю установку man-страницы, как и ожидалось (учитывая, что у вас также нет
nodocs
tsflag
вышеупомянутого.источник
Изображение Docker очень урезано. Я считаю, что они удаляют страницы руководства после установки RPM. Вы можете проверить это с
rpm -V shadow-utils
. Я знаю, что у меня были проблемы при попытке использовать дельта-RPM для обновления пакетов, потому что man-страницы отсутствуют.К сожалению, я думаю, что единственный способ получить справочную страницу для чего-то - принудительно переустановить RPM или вручную извлечь их из RPM и поместить их на место.
Смотрите также этот сайт, я думаю.
источник
yum reinstall shadow-utils
это исправлю.man-pages
правильно установить?man-pages
.источник