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


13

最小限の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)があります。しかし、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にあるはずのマニュアルページが見つからないのはなぜですか?
  2. man-pagesRPMのインストールが(成功して)RPMにあるはずのファイルをインストールしないのはなぜですか?

更新:アーロン・マラスコの回答msuchyのコメントごとに、私はを試しましたyum reinstall shadow-utils。と同様にyum install man-pages、これは正常に完了したように見えますが、実際にファイルを配置しません/usr/share/man/


CentOS 6ドッカーイメージに関する同様の質問:unix.stackexchange.com/questions/182500/no-manual-entry-for-man
maxschlepzig

CentOS 7でのVagrantのセットアップで偶然に遭遇しました- パッケージがインストール される前にインストールされた一部のパッケージにman-pagesはマニュアルページがありませんでした。解決策は、そのようなパッケージを再インストールすることでしたyum reinstall yum rpm。たとえば、これら2つをカバーするためです。
-RichVel

回答:


12

イメージには、yum設定でトランザクションフラグが設定されいる可能性がありnodocsます(cf. /etc/yum.conf)。

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

例えば:

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

それ--setopt=tsflags=''南サミットの答えで示唆されているとおりでしょうか?(=-
デヴィッド・モグラ

1
@DavidMoles、はい、これはタイプミスでした-参照されるプロジェクトのドキュメントでも正しいスイッチ構文が使用されました。
-maxschlepzig

ありがとう。修正しましたが、6文字の制限があります。:)
デビッドモールズ

なぜshadow-utilsを再インストールするのですか?
ティーナ

@Tina。これはコマンドuseradd(質問で参照された)を提供するパッケージだからです。
maxschlepzig

5

ここでは何も機能せず、その上、受け入れられた答えにはタイプミスが含まれています。そこにコメントするのに十分な担当者がいないので、誰かを助ける場合の答えとしてここに追加します。

manページを使用してパッケージをインストールするには、次を使用します。

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

次に:

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

または、yum.confから行を永久に削除して、manページをインストールできないようにすることができます。これを行うには、次を使用します。

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

その後、yum installまたはyum reinstall通常使用できます。

ソース


+ 1、nodocs行をコメントアウトするためだけにsed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
マイケル

2

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

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

# rpm --showrc | grep docs

それがそこにあるなら、あなたは指定し、それは私の場合には、それは下にあったというファイルを見つけなければならない/etc/rpm/macros.imgcreateし、それを削除します

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


1

Dockerイメージは非常に削除されています。RPMがインストールされた、彼らはmanページを削除すると信じています。これはで確認できrpm -V shadow-utilsます。マニュアルページが欠落しているため、デルタRPMを使用してパッケージをアップグレードしようとすると問題が発生することを知っています。

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

このサイトも参照してください。


2
はい。yum reinstall shadow-utilsそれを修正します。
msuchy

@msuchy私はそれを試しましたが、いや、そうではありません。おそらくman-pages適切にインストールすることを妨げるものに関連していますか?
デビッドモールズ

@ aaron-d-marascoそもそもなぜそれらがインストールされていないのかを説明していますが、インストールしようとしたときに何が起こっているのかは説明していませんman-pages
デビッドモールズ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.