web-dev-qa-db-ja.com

最小のCentos Dockerコンテナにマニュアルページをインストールできない

私は最小限のCentos 7 Dockerイメージを持っています。Dockerfileのデバッグに役立つように、いくつかのmanページを取得しようとしています。箱から出して、それは多くはありません:

# 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-pageslsのマニュアルページが含まれていることを確認しました。

# 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仮想ファイルシステムの奇妙さではありません。

これの最も良い部分は、私が今分本当に本当に欲しかったのは、そのRPMにもないuseraddコマンドのmanページだったことです。 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など)が存在します。しかし、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

だから私の質問は:

  1. バイナリを見つけることができるのに、shadow-utils RPMにあるはずのmanページが見つからないのはなぜですか?
  2. man-pages RPMを(正常に)インストールしても、そのRPMにあるはずのファイルがインストールされないのはなぜですか?

更新:Aaron Marascoの回答 および msuchyのコメント に従って、yum reinstall shadow-utilsを試しました。 yum install man-pagesと同様に、これは正常に完了したように見えますが、実際には/usr/share/man/にファイルを配置していません。

13
David Moles

画像 おそらく持っている yum構成で設定されたnodocsトランザクションフラグ(cf. /etc/yum.conf)。

マニュアルページが必要なパッケージを(再)インストールする前に、グローバルに(またはyumコマンドラインで)削除できます。

例えば:

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

これは古い質問であることは承知していますが、これを追跡するのに費やした時間を考えると、最終的には他の誰かに役立つでしょう。

この問題は、DockerイメージでRPMを構成する方法に関連しています。まず、excludedocsディレクティブがRPMの構成に次のようにリストされているかどうかを確認します。

_# rpm --showrc | grep docs
_

そこにある場合は、私の場合はそれを指定するファイルを見つけて_/etc/rpm/macros.imgcreate_の下にあり、それを削除する必要があります

次に、Yumはすべてのマンページのインストールを期待どおりに実行する必要があります(上記のnodocstsflagもない場合)。

2
imoschak

Dockerイメージは非常に取り除かれています。 manページは削除されると思いますafter RPMがインストールされています。これはrpm -V shadow-utilsで確認できます。 manページが見つからないため、デルタRPMを使用してパッケージをアップグレードしようとして問題が発生しました。

悲しいことに、何かのmanページを取得する唯一の方法は、RPMを強制的に再インストールするか、RPMから手動で抽出して所定の場所にドロップすることだと思います。

this site も参照してください。

1