Impossibile installare le pagine man sul contenitore Centos Docker minimo


13

Ho un'immagine Docker di Centos 7 minimale e sto cercando di ottenere delle pagine man su di esso per aiutare il debug del mio Dockerfile. Fuori dagli schemi, non ha molto:

# man ls
No manual entry for ls

Per questa risposta Serverfault , ho installato l' man-pagesRPM e questo sembrava andare bene:

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

Tuttavia:

# man ls
No manual entry for ls

Prima rpmcontrollavo che man-pagesdovesse includere la lspagina man e sembra che lo faccia:

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

Ma non sembra che sia stato effettivamente installato:

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

E non sembra nemmeno essere altrove sul filesystem.

# find / -name ls.1\*
#

Posso creare file /usr/share/man/man1p/, quindi probabilmente non è una stranezza del filesystem virtuale Docker.

La parte migliore di questo è che quello che volevo davvero in questo momento era la pagina man per il useraddcomando, che non è nemmeno in quel RPM. È dentro 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

Che è già installato.

# 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

E, in effetti, i binari (es. /usr/sbin/useradd) Ci sono. Ma non le pagine man.

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

Quindi le mie domande sono:

  1. Perché non riesco a trovare nessuna delle pagine man che dovrebbero essere shadow-utilsnell'RPM, quando posso trovare i binari?
  2. Perché l'installazione (corretta) man-pagesdell'RPM non installa i file che dovrebbero essere presenti in quell'RPM?

Aggiornamento: Per la risposta di Aaron Marasco e il commento di msuchy , ho provato yum reinstall shadow-utils. Come nel caso yum install man-pages, questo sembra completarsi correttamente, ma in realtà non inserisce alcun file /usr/share/man/.



Mi è successo su una configurazione di Vagrant con CentOS 7: ho scoperto che alcuni pacchetti installati prima dell'installazione del man-pagespacchetto non avevano pagine man. La soluzione era reinstallare tali pacchetti, ad esempio yum reinstall yum rpmper coprire quei due.
RichVel

Risposte:


12

La tua immagine probabilmente ha il nodocsflag di transazione impostato nella configurazione di yum (cfr /etc/yum.conf.).

Puoi rimuoverlo a livello globale (o dalla riga di comando di yum) prima di (ri) installare i pacchetti per i quali vuoi le pagine man.

Per esempio:

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

Dovrebbe essere --setopt=tsflags=''come suggerito nella risposta del vertice sud ? ( =per -)
David Moles,

1
@DavidMoles, sì, si trattava di un errore di battitura: nel documento projectatomic di riferimento è stata utilizzata anche la sintassi dello switch corretta.
maxschlepzig,

Grazie. Lo avrei appena risolto, ma un limite di 6 caratteri. :)
David Moles,

perché reinstallare shadow-utils?
Tiina,

@Tina perché questo è il pacchetto che fornisce il comando useradd(a cui faceva riferimento la domanda).
maxschlepzig,

5

Niente qui ha funzionato e per di più la risposta accettata contiene un refuso. Non ho abbastanza rappresentante per commentare lì, quindi lo aggiungo qui come risposta nel caso in cui aiuti qualcuno.

Per installare un pacchetto con pagine man usare:

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

Poi:

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

Oppure, è possibile rimuovere definitivamente la linea da yum.conf che impedisce l'installazione di pagine man. Per fare ciò, utilizzare:

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

Quindi puoi usare yum installo yum reinstallnormalmente.

fonte


+1 anche, per commentare semplicemente la linea di nodocs,sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
michael

2

So che questa è una vecchia domanda, ma dato il tempo che ho trascorso a rintracciarlo, alla fine tornerà utile a qualcun altro.

Il problema è legato al modo in cui RPM è configurato nell'immagine docker, per prima cosa controlla se la excludedocsdirettiva è elencata nella configurazione di RPM in questo modo:

# rpm --showrc | grep docs

Se è lì, allora devi trovare il file che lo specifica nel mio caso era sotto /etc/rpm/macros.imgcreatee rimuoverlo

Yum dovrebbe quindi eseguire l'installazione di tutte le pagine man come previsto (dato che non hai anche quello nodocs tsflagsopra menzionato.


1

L'immagine Docker è estremamente ridotta. Credo che rimuovano le pagine man dopo l'installazione degli RPM. Puoi verificarlo con rpm -V shadow-utils. So di avere avuto problemi nel tentativo di utilizzare RPM delta per aggiornare i pacchetti perché mancano le pagine man.

Purtroppo, penso che l'unico modo per ottenere una pagina man per qualcosa sarebbe forzare la reinstallazione degli RPM o estrarli manualmente dagli RPM e rilasciarli in posizione.

Vedi anche questo sito immagino.


2
Sì. yum reinstall shadow-utilslo aggiusterò.
msuchy,

@msuchy L'ho appena provato, e no, non è così. Presumibilmente correlato a ciò che impedisce l' man-pagesinstallazione corretta?
David Moles,

@ aaron-d-marasco Questo spiega perché all'inizio non sono installati, ma non spiega cosa succede quando provo ad installare man-pages.
David Moles,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.