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-pages
RPM, 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 rpm
memeriksa yang man-pages
seharusnya menyertakan ls
halaman 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 useradd
perintah 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:
- Mengapa saya tidak dapat menemukan halaman manual yang seharusnya ada di
shadow-utils
RPM, ketika saya dapat menemukan binari? - Mengapa (tidak berhasil) menginstal
man-pages
RPM 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/
.
man-pages
paket diinstal tidak memiliki halaman manual. Solusi adalah menginstal ulang paket-paket tersebut, misalnyayum reinstall yum rpm
untuk menutup keduanya.Jawaban:
Gambar Anda mungkin memiliki satu
nodocs
bendera 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:
sumber
--setopt=tsflags=''
seperti yang disarankan dalam jawaban KTT selatan ? (=
untuk-
)useradd
(yang direferensikan dalam pertanyaan).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 install
atau secarayum reinstall
normal.Sumber
sumber
sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
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
excludedocs
direktif tercantum dalam konfigurasi RPM seperti:Jika ada di sana maka Anda harus menemukan file yang menentukan dalam kasus saya itu di bawah
/etc/rpm/macros.imgcreate
dan menghapusnyaYum kemudian harus melakukan semua instalasi halaman manual seperti yang diharapkan (mengingat bahwa Anda juga tidak memiliki yang
nodocs
tsflag
disebutkan di atas.sumber
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.
sumber
yum reinstall shadow-utils
akan memperbaikinya.man-pages
menginstal dengan benar?man-pages
.sumber