Неможливо встановити підручні сторінки на мінімальному контейнері Centos Docker


13

У мене мінімальне зображення Docker Centos 7, і я намагаюся отримати на ньому кілька сторінок, щоб допомогти в налагодженні мого Dockerfile. У коробці не багато:

# man ls
No manual entry for ls

Відповідно до цієї серверної відповіді , я встановив оберти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

Найкраща частина цього в тому, що я дуже хотіла прямо в цю хвилину - це довідкова сторінка для 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. Чому я не можу знайти жодної сторінки, що повинна shadow-utilsмістити RPM, коли я можу знайти двійкові файли?
  2. Чому (успішно) встановлення man-pagesRPM не встановлює файли, які повинні бути в цьому RPM?

Оновлення: Відповідь Аарона Мараско та коментар msuchy я спробував yum reinstall shadow-utils. Як і у випадку yum install man-pages, це, здається, завершується успішно, але насправді не містить жодних файлів /usr/share/man/.


подібне запитання щодо centos 6 docker imge: unix.stackexchange.com/questions/182500/no-manual-entry-for-man
maxschlepzig

Сталося зі мною під час налаштування Vagrant за допомогою CentOS 7 - я виявив, що деякі пакети, встановлені до встановлення man-pagesпакету, не мали довідкових сторінок. Рішенням було встановити такі пакети, наприклад, yum reinstall yum rpmщоб покрити ці два пакети .
RichVel

Відповіді:


12

Напевно, у вашому зображенні nodocsвстановлено прапор транзакції у конфігурації yum (пор. /etc/yum.conf).

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

Наприклад:

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

Чи слід це робити так, --setopt=tsflags=''як пропонується у відповіді на саміт на південь ? ( =для -)
Девід Молес

1
@DavidMoles, так, це була помилка друку - правильний синтаксис комутатора також використовувався у посилальному проектотомічному документі.
maxschlepzig

Спасибі. Я би щойно це зафіксував, але обмеження на 6 символів. :)
Девід Молес

навіщо перевстановити тіньові утиліти?
Тіна

@Tina, тому що це пакет, який забезпечує команду useradd(на яку було посилатися у запитанні).
maxschlepzig

5

Тут нічого не працювало, і крім того, що прийнята відповідь містить помилку друку. Мені не вистачає Rep для коментарів, тому я додаю це тут як відповідь, якщо це комусь допомагає.

Для встановлення пакета з підручними сторінками використовуйте:

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звичайно.

Джерело


Також +1, щоб просто прокоментувати рядок нодоків,sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
Майкл

2

Я знаю, що це давнє питання, але, враховуючи час, який я витратив на його спостереження, з часом він стане в нагоді комусь іншому.

Проблема пов'язана з налаштуванням RPM у зображенні докера, спочатку перевірте, чи excludedocsвказана директива в конфігурації RPM так:

# rpm --showrc | grep docs

Якщо він знаходиться там, то ви повинні знайти файл, який його вказує, у моєму випадку він був /etc/rpm/macros.imgcreateі видалити його

Тоді Yum повинен виконати всі встановлення на манері сторінки, як очікувалося (враховуючи, що у вас також немає nodocs tsflagзазначеного вище.


1

Образ Докера надзвичайно позбавлений. Я вважаю, що вони видаляють підручні сторінки після встановлення RPM. Ви можете підтвердити це за допомогою rpm -V shadow-utils. Я знаю, що у мене виникли проблеми при використанні дельта-RPM для оновлення пакетів, тому що підручні сторінки відсутні.

На жаль, я думаю, що єдиним способом отримати довідкову сторінку для чогось було б змусити перевстановити RPM або вручну витягнути їх з RPM і скинути їх на місце.

Дивіться також цей сайт, я думаю.


2
Так. yum reinstall shadow-utilsвиправить це.
msuchy

@msuchy Я просто спробував це, і ні, це не так. Імовірно, пов’язане з тим, що заважає man-pagesправильно встановити?
Девід Молес

@ aaron-d-marasco Це пояснює, чому вони не встановлені для початку, але це не пояснює, що відбувається, коли я намагаюся встановити man-pages.
Девід Молес

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.