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-pages
RPM 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ś rpm
sprawdzałem, czy man-pages
powinna zawierać ls
stronę 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 useradd
polecenia, 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:
- Dlaczego nie mogę znaleźć żadnej strony podręcznika, która powinna znajdować się w
shadow-utils
RPM, skoro mogę znaleźć pliki binarne? - Dlaczego (z powodzeniem) instalacja
man-pages
RPM 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/
.
man-pages
pakietu nie miały stron podręcznika . Rozwiązaniem było ponowne zainstalowanie takich pakietów, np.yum reinstall yum rpm
Aby pokryć te dwa.Odpowiedzi:
Twój obraz ma prawdopodobnie na
nodocs
flagę 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:
źródło
--setopt=tsflags=''
zgodne z sugestią zawartą w odpowiedzi ze szczytu południowego ? (=
dla-
)useradd
(o którym mowa w pytaniu).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 install
lubyum reinstall
normalnie.Źródło
źródło
sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
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
excludedocs
dyrektywa jest wymieniona w konfiguracji RPM w następujący sposób:Jeśli tam jest, musisz znaleźć plik, który określa go w moim przypadku i był pod,
/etc/rpm/macros.imgcreate
i usunąć goYum powinien następnie wykonać całą instalację man-page zgodnie z oczekiwaniami (biorąc pod uwagę, że nie masz również
nodocs
tsflag
wspomnianego wyżej).źródło
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ę .
źródło
yum reinstall shadow-utils
naprawi to.man-pages
prawidłową instalację?man-pages
.źródło