Ich habe ein minimales Centos 7 Docker-Image und versuche, Manpages darauf zu finden, die beim Debuggen meiner Docker-Datei helfen. Nach dem Auspacken hat es nicht viel:
# man ls
No manual entry for ls
Nach dieser Serverfault-Antwort habe ich das man-pages
RPM installiert , und das schien in Ordnung zu sein:
# 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!
Jedoch:
# man ls
No manual entry for ls
Früher habe ich rpm
überprüft, ob man-pages
die ls
Manpage enthalten sein sollte, und es sieht so aus:
# rpm -ql man-pages | grep -w ls
/usr/share/man/man1p/ls.1p.gz
Es sieht aber nicht so aus, als wäre es tatsächlich installiert:
# man 1p ls
No manual entry for ls in section 1p
# ls -l /usr/share/man/man1p/
total 0
Und es scheint auch nirgendwo anders im Dateisystem zu sein.
# find / -name ls.1\*
#
Ich kann Dateien in erstellen /usr/share/man/man1p/
, daher ist es wahrscheinlich keine Verrücktheit des virtuellen Docker-Dateisystems.
Das Beste daran ist, dass ich in dieser Minute wirklich die Manpage für den useradd
Befehl haben wollte, die nicht einmal in diesem RPM enthalten ist. Es ist in 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
Welches ist bereits installiert.
# 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
Und tatsächlich sind die Binaries (zB /usr/sbin/useradd
) da. Aber nicht die Manpages.
# ls -l /usr/share/man/man8/useradd.8.gz
ls: cannot access /usr/share/man/man8/useradd.8.gz: No such file or directory
Meine Fragen sind also:
- Warum kann ich keine der Manpages finden, die sich im
shadow-utils
RPM befinden sollen , wenn ich die Binärdateien finde? - Warum werden
man-pages
die Dateien, die in diesem RPM enthalten sein sollen, nicht (erfolgreich) installiert ?
Update: Per Aaron Marascos Antwort und msuchys Kommentar habe ich es versucht yum reinstall shadow-utils
. Wie bei yum install man-pages
scheint dies erfolgreich abgeschlossen zu werden, es werden jedoch keine Dateien gespeichert /usr/share/man/
.
man-pages
Pakets installiert wurden, keine Manpages hatten. Die Lösung bestand darin, solche Pakete neu zu installieren, z. B.yum reinstall yum rpm
um diese beiden abzudecken.Antworten:
In Ihrer Grafik ist wahrscheinlich das
nodocs
Transaktionsflag in der yum-Konfiguration gesetzt (vgl./etc/yum.conf
).Sie können es global (oder über die YUM-Befehlszeile) entfernen, bevor Sie die Pakete, für die Sie die Manpages benötigen, (erneut) installieren.
Beispielsweise:
quelle
--setopt=tsflags=''
wie in der Antwort des Südgipfels vorgeschlagen ? (=
für-
)useradd
(auf den in der Frage verwiesen wurde).Hier hat nichts funktioniert und außerdem enthält die akzeptierte Antwort einen Tippfehler. Ich habe nicht genug Repräsentanten, um dort zu kommentieren, also füge ich es hier als Antwort hinzu, falls es jemandem hilft.
So installieren Sie ein Paket mit Manpages:
yum --setopt=tsflags='' install man-db
Dann:
yum --setopt=tsflags='' install {your-package-name}
Oder Sie können die Zeile dauerhaft aus yum.conf entfernen, wodurch die Installation von Manpages verhindert wird. Verwenden Sie dazu:
sed -i '/tsflags=nodocs/d' /etc/yum.conf
Dann kannst du
yum install
oderyum reinstall
normal benutzen .Quelle
quelle
sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
Ich weiß, dass dies eine alte Frage ist, aber angesichts der Zeit, die ich damit verbracht habe, sie aufzuspüren, wird sie irgendwann jemand anderem nützlich sein.
Das Problem hängt mit der Art und Weise zusammen, wie RPM im Docker-Image konfiguriert ist. Überprüfen Sie zunächst, ob die
excludedocs
Direktive in der RPM-Konfiguration wie folgt aufgeführt ist:Wenn es dort ist, müssen Sie die Datei finden, die es in meinem Fall angibt, unter der es war,
/etc/rpm/macros.imgcreate
und es entfernenYum sollte dann alle Manpage-Installationen wie erwartet durchführen (vorausgesetzt, Sie haben nicht auch die
nodocs
tsflag
oben genannten.quelle
Das Docker-Image ist extrem reduziert. Ich glaube, sie entfernen die Manpages, nachdem die RPMs installiert wurden. Sie können dies mit bestätigen
rpm -V shadow-utils
. Ich weiß, ich hatte Probleme beim Versuch, Delta-RPMs zum Aktualisieren von Paketen zu verwenden, da die Manpages fehlen.Leider denke ich, dass die einzige Möglichkeit, eine Manpage für etwas zu erhalten, darin besteht, die RPM neu zu installieren oder sie manuell aus der RPM zu extrahieren und an Ort und Stelle abzulegen.
Siehe auch diese Seite, denke ich.
quelle
yum reinstall shadow-utils
werde es reparieren.man-pages
ordnungsgemäße Installation verhindert ?man-pages
.quelle