Centos

無法在最小的 Centos Docker 容器上安裝手冊頁

  • May 20, 2021

我有一個最小的 Centos 7 Docker 映像,我正在嘗試獲取一些手冊頁來幫助調試我的 Dockerfile。開箱即用,它沒有太多:

# man ls
No manual entry for ls

根據這個 Serverfault 答案,我安裝了man-pagesRPM,這似乎很順利:

# 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

所以我的問題是:

  1. 當我可以找到二進製文件時,為什麼我找不到任何應該在shadow-utilsRPM 中的手冊頁?
  2. 為什麼不(成功)安裝man-pagesRPM 安裝應該在該 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 installyum reinstall

來源

引用自:https://unix.stackexchange.com/questions/259478