Tidak dapat menginstal halaman manual pada wadah Centos Docker minimal

13

Saya memiliki minimal gambar Centos 7 Docker, dan saya mencoba untuk mendapatkan beberapa halaman manual untuk membantu debugging Dockerfile saya. Di luar kotak, tidak banyak:

# man ls
No manual entry for ls

Per jawaban Serverfault ini , saya menginstal man-pagesRPM, dan sepertinya berjalan dengan baik:

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

Namun:

# man ls
No manual entry for ls

Saya biasa rpmmemeriksa yang man-pagesseharusnya menyertakan lshalaman manual, dan sepertinya memang demikian:

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

Tapi sepertinya tidak diinstal:

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

Dan sepertinya juga tidak ada di tempat lain di sistem file.

# find / -name ls.1\*
#

Saya dapat membuat file /usr/share/man/man1p/, jadi mungkin bukan keanehan sistem file virtual Docker.

Bagian terbaik dari ini adalah apa yang benar-benar saya inginkan saat ini adalah halaman manual untuk useraddperintah tersebut, yang bahkan tidak ada dalam RPM itu. Ini di 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

Yang sudah diinstal.

# 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

Dan, pada kenyataannya, binari (misalnya /usr/sbin/useradd) ada di sana. Tapi bukan halaman manual.

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

Jadi pertanyaan saya adalah:

  1. Mengapa saya tidak dapat menemukan halaman manual yang seharusnya ada di shadow-utilsRPM, ketika saya dapat menemukan binari?
  2. Mengapa (tidak berhasil) menginstal man-pagesRPM menginstal file yang seharusnya ada dalam RPM itu?

Pembaruan: Jawaban Per Aaron Marasco dan komentar msuchy , saya coba yum reinstall shadow-utils. Seperti yum install man-pages, ini tampaknya berhasil diselesaikan, tetapi tidak benar-benar memasukkan file /usr/share/man/.

David Moles
sumber
pertanyaan serupa pada centos 6 docker imge: unix.stackexchange.com/questions/182500/no-manual-entry-for-man
maxschlepzig
Terjadi pada saya pada pengaturan Vagrant dengan CentOS 7 - Saya menemukan bahwa beberapa paket diinstal sebelum man-pagespaket diinstal tidak memiliki halaman manual. Solusi adalah menginstal ulang paket-paket tersebut, misalnya yum reinstall yum rpmuntuk menutup keduanya.
RichVel

Jawaban:

12

Gambar Anda mungkin memiliki satu nodocsbendera transaksi diatur dalam konfigurasi yum (lih /etc/yum.conf).

Anda dapat menghapusnya secara global (atau pada baris perintah yum) sebelum (kembali) menginstal paket yang Anda inginkan halaman manualnya.

Sebagai contoh:

yum --setopt=tsflags='' reinstall shadow-utils
maxschlepzig
sumber
Haruskah itu --setopt=tsflags=''seperti yang disarankan dalam jawaban KTT selatan ? ( =untuk- )
David Moles
1
@ Davidvidoles, ya, ini salah ketik - sintaks saklar yang benar juga digunakan dalam dokumen projectatomic yang dirujuk.
maxschlepzig
Terima kasih. Saya baru saja memperbaikinya, tetapi batas 6 karakter. :)
David Moles
mengapa menginstal ulang shadow-utils?
Tiina
@Tina karena ini adalah paket yang menyediakan perintah useradd(yang direferensikan dalam pertanyaan).
maxschlepzig
5

Tidak ada yang berfungsi dan selain itu jawaban yang diterima berisi kesalahan ketik. Saya tidak punya cukup perwakilan untuk berkomentar di sana, jadi saya menambahkannya di sini sebagai jawaban kalau-kalau itu membantu siapa pun.

Untuk menginstal paket dengan halaman manual gunakan:

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

Kemudian:

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

Atau, Anda dapat menghapus baris secara permanen dari yum.conf yang mencegah pemasangan halaman manual. Untuk melakukan ini, gunakan:

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

Maka Anda bisa menggunakan yum installatau secara yum reinstallnormal.

Sumber

Mark Thomson
sumber
+1 juga, untuk sekadar mengomentari baris nodocs,sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
michael
2

Saya tahu ini adalah pertanyaan lama tetapi mengingat waktu yang saya habiskan untuk melacak ini, pada akhirnya akan berguna bagi orang lain.

Masalahnya terkait dengan cara RPM dikonfigurasi dalam gambar buruh pelabuhan, periksa terlebih dahulu untuk melihat apakah excludedocsdirektif tercantum dalam konfigurasi RPM seperti:

# rpm --showrc | grep docs

Jika ada di sana maka Anda harus menemukan file yang menentukan dalam kasus saya itu di bawah /etc/rpm/macros.imgcreate dan menghapusnya

Yum kemudian harus melakukan semua instalasi halaman manual seperti yang diharapkan (mengingat bahwa Anda juga tidak memiliki yang nodocs tsflagdisebutkan di atas.

imoschak
sumber
1

Gambar Docker sangat tipis. Saya percaya mereka menghapus halaman manual setelah RPM diinstal. Anda dapat memverifikasi ini dengan rpm -V shadow-utils. Saya tahu saya punya masalah mencoba menggunakan RPM delta untuk memutakhirkan paket karena halaman manual hilang.

Sayangnya, saya pikir satu-satunya cara untuk mendapatkan halaman manual untuk sesuatu adalah dengan paksa menginstal ulang RPM atau secara manual mengekstraknya dari RPM dan meletakkannya di tempat.

Lihat juga situs ini saya kira.

Aaron D. Marasco
sumber
2
Iya. yum reinstall shadow-utilsakan memperbaikinya.
msuchy
@ muchuchy Saya baru saja mencobanya, dan tidak, tidak. Mungkin terkait dengan apa pun yang mencegah man-pagesmenginstal dengan benar?
David Moles
@ aaron-d-marasco Itu menjelaskan mengapa mereka tidak diinstal untuk memulai, tetapi tidak menjelaskan apa yang terjadi ketika saya mencoba menginstal man-pages.
David Moles
-4
export MANPATH=/usr/share/man/fr
pengguna268477
sumber
5
Anda harus menjelaskan mengapa Anda merekomendasikan perintah ini.
Centimane