Nie można zainstalować stron podręcznika na minimalnym kontenerze Docker Centos

13

Mam minimalny obraz Docker Centos 7 i próbuję znaleźć na nim kilka stron podręcznika użytkownika, które pomogą w debugowaniu mojego pliku Docker. Po wyjęciu z pudełka nie ma wiele:

# man ls
No manual entry for ls

Zgodnie z odpowiedzią na błąd serwera zainstalowałem man-pagesRPM i wszystko poszło dobrze:

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

Jednak:

# man ls
No manual entry for ls

Kiedyś rpmsprawdzałem, czy man-pagespowinna zawierać lsstronę podręcznika , i wygląda na to, że:

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

Ale nie wygląda na to, że został faktycznie zainstalowany:

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

I wydaje się, że nie ma go nigdzie indziej w systemie plików.

# find / -name ls.1\*
#

Mogę tworzyć pliki /usr/share/man/man1p/, więc prawdopodobnie nie jest to dziwny wirtualny system plików Dockera.

Najlepsze jest to, że w tej chwili tak naprawdę chciałem strony man dla useraddpolecenia, której nawet nie ma w RPM. Jest w środku 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

Który jest już zainstalowany.

# 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

I w rzeczywistości istnieją pliki binarne (np. /usr/sbin/useradd). Ale nie strony podręcznika.

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

Więc moje pytania to:

  1. Dlaczego nie mogę znaleźć żadnej strony podręcznika, która powinna znajdować się w shadow-utilsRPM, skoro mogę znaleźć pliki binarne?
  2. Dlaczego (z powodzeniem) instalacja man-pagesRPM nie instaluje plików, które powinny znajdować się w tym RPM?

Aktualizacja: Per odpowiedź Aaron Marasco za i komentarz msuchy za starałem yum reinstall shadow-utils. Podobnie jak w przypadku yum install man-pages, wydaje się, że zakończyło się to pomyślnie, ale tak naprawdę nie wkłada żadnych plików /usr/share/man/.

David Moles
źródło
podobne pytanie na temat dokera centos 6 imge: unix.stackexchange.com/questions/182500/no-manual-entry-for-man
maxschlepzig
Zdarzyło mi się przy instalacji Vagrant z CentOS 7 - odkryłem, że niektóre pakiety zainstalowane przed zainstalowaniem man-pagespakietu nie miały stron podręcznika . Rozwiązaniem było ponowne zainstalowanie takich pakietów, np. yum reinstall yum rpmAby pokryć te dwa.
RichVel,

Odpowiedzi:

12

Twój obraz ma prawdopodobnie na nodocsflagę transakcji ustawiony w konfiguracji yum (por /etc/yum.conf).

Możesz usunąć go globalnie (lub w wierszu poleceń yum) przed (ponownym) instalowaniem pakietów, dla których chcesz stron man.

Na przykład:

yum --setopt=tsflags='' reinstall shadow-utils
maxschlepzig
źródło
Czy powinno to być --setopt=tsflags=''zgodne z sugestią zawartą w odpowiedzi ze szczytu południowego ? ( =dla -)
David Moles,
1
@DavidMoles, tak, to była literówka - poprawna składnia przełącznika została również użyta w przywoływanym dokumencie projektatomicznym.
maxschlepzig
Dzięki. Właśnie to naprawiłem, ale limit 6 znaków. :)
David Moles,
po co ponownie instalować narzędzia shadow-utils?
Tiina,
@ Tina, ponieważ jest to pakiet, który udostępnia polecenie useradd(o którym mowa w pytaniu).
maxschlepzig
5

Nic tu nie działało, a ponadto zaakceptowana odpowiedź zawiera literówkę. Nie mam wystarczającej liczby przedstawicieli, aby skomentować, więc dodaję to tutaj jako odpowiedź na wypadek, gdyby komukolwiek to pomogło.

Aby zainstalować pakiet ze stronami podręcznika, użyj:

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

Następnie:

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

Możesz też trwale usunąć wiersz z yum.conf, co uniemożliwi instalację stron podręcznika. Aby to zrobić, użyj:

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

Następnie możesz użyć yum installlub yum reinstallnormalnie.

Źródło

Mark Thomson
źródło
+1 również, aby po prostu skomentować linię nodocs,sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
Michael
2

Wiem, że to stare pytanie, ale biorąc pod uwagę czas, który spędziłem na śledzeniu tego, w końcu przyda się komuś innemu.

Problem związany jest ze sposobem konfiguracji RPM w obrazie dokera, najpierw sprawdź, czy excludedocsdyrektywa jest wymieniona w konfiguracji RPM w następujący sposób:

# rpm --showrc | grep docs

Jeśli tam jest, musisz znaleźć plik, który określa go w moim przypadku i był pod, /etc/rpm/macros.imgcreatei usunąć go

Yum powinien następnie wykonać całą instalację man-page zgodnie z oczekiwaniami (biorąc pod uwagę, że nie masz również nodocs tsflagwspomnianego wyżej).

imoschak
źródło
1

Obraz Dockera jest bardzo uproszczony. Wierzę, że usuwają strony podręcznika po zainstalowaniu RPM. Możesz to zweryfikować za pomocą rpm -V shadow-utils. Wiem, że miałem problemy z próbą użycia delta RPM do aktualizacji pakietów, ponieważ brakuje stron podręcznika.

Niestety, myślę, że jedynym sposobem na uzyskanie strony podręcznika dla czegoś byłoby wymuszenie ponownej instalacji RPM lub ręczne wyodrębnienie ich z RPM i upuszczenie ich na miejscu.

Zobacz także tę stronę .

Aaron D. Marasco
źródło
2
Tak. yum reinstall shadow-utilsnaprawi to.
msuchy
@msuchy Właśnie tego próbowałem i nie, nie robi tego. Przypuszczalnie związane z czymkolwiek, co uniemożliwia man-pagesprawidłową instalację?
David Moles,
@ aaron-d-marasco To wyjaśnia, dlaczego nie są instalowane, ale nie wyjaśnia, co się dzieje, gdy próbuję zainstalować man-pages.
David Moles,
-4
export MANPATH=/usr/share/man/fr
użytkownik268477
źródło
5
Powinieneś wyjaśnić, dlaczego polecasz to polecenie.
Centimane