無法在最小的 Centos Docker 容器上安裝手冊頁
我有一個最小的 Centos 7 Docker 映像,我正在嘗試獲取一些手冊頁來幫助調試我的 Dockerfile。開箱即用,它沒有太多:
# man ls No manual entry for ls
根據這個 Serverfault 答案,我安裝了
man-pages
RPM,這似乎很順利:# 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!
然而:
# man ls No manual entry for ls
我曾經
rpm
檢查man-pages
應該包含ls
手冊頁,它看起來像這樣:# rpm -ql man-pages | grep -w ls /usr/share/man/man1p/ls.1p.gz
但它看起來並沒有實際安裝:
# man 1p ls No manual entry for ls in section 1p # ls -l /usr/share/man/man1p/ total 0
而且它似乎也不在文件系統的其他任何地方。
# find / -name ls.1\* #
我可以在 中創建文件
/usr/share/man/man1p/
,所以這可能不是一些 Docker 虛擬文件系統的怪異之處。最好的部分是我現在真正想要的是
useradd
命令的手冊頁,它甚至不在那個 RPM 中。它在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
哪個已經安裝了。
# 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
而且,事實上,二進製文件(例如
/usr/sbin/useradd
)就在那裡。但不是手冊頁。# ls -l /usr/share/man/man8/useradd.8.gz ls: cannot access /usr/share/man/man8/useradd.8.gz: No such file or directory
所以我的問題是:
- 當我可以找到二進製文件時,為什麼我找不到任何應該在
shadow-utils
RPM 中的手冊頁?- 為什麼不(成功)安裝
man-pages
RPM 安裝應該在該 RPM 中的文件?**更新:**根據Aaron Marasco 的回答和msuchy 的評論,我試過了
yum reinstall shadow-utils
。與 一樣yum install man-pages
,這似乎成功完成,但實際上並未將任何文件放入/usr/share/man/
.
您的圖像可能在 yum 配置中設置了
nodocs
事務標誌(參見/etc/yum.conf
)。您可以在(重新)安裝您想要手冊頁的軟體包之前全域(或在 yum 命令行)刪除它。
例如:
yum --setopt=tsflags='' reinstall shadow-utils
這裡沒有任何東西對我有用,所以我添加另一個答案以防它對任何人有幫助。
要安裝帶有手冊頁的軟體包,請使用:
yum --setopt=tsflags='' install man-db
然後:
yum --setopt=tsflags='' install {your-package-name}
或者,您可以從 yum.conf 中永久刪除阻止安裝手冊頁的行。為此,請使用:
sed -i '/tsflags=nodocs/d' /etc/yum.conf
然後就可以正常使用
yum install
了yum reinstall
。