注:これはCentos 7に適用されます。Debianの回答を探している場合は、 この質問 を参照してください。これらの回答はここでは複製されません。
Centos 7をインストールした後、manページにアクセスできません。
# man ls
-bash: man: command not found
Yumでインストールしてみた
# yum install man-pages
... ok
しかし、再び:
# man ls
-bash: man: command not found
どうして?
Manコマンドを使用するには、man-pages
の前または後にman
パッケージもインストールする必要があります
# yum install man-pages
... ok
# yum install man
... ok
これでman
がインストールされました
# man ls
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort.
Mandatory arguments to long options are mandatory for short options too. ...
私のdockerコンテナーで同じ問題があり、コメントアウトして解決しましたtsflags=nodocs
の中に /etc/yum.conf
ファイルを削除してから、man-pagesとman-dbを削除して、再インストールしました。この方法で問題なく動作します。
$ vi /etc/yum.conf
ファイル内でtsflags
を検索し、その前にコメント(#)を追加します。
#tsflags=nodocs
システムにすでにインストールされている場合は、man-dbとman-pagesを削除します。
$ yum remove man-pages man-db
次に、それらを再度インストールします。
$ yum install man-pages man-db
ソートされました!
R。S で指摘されているように、CentOSの公式Dockerイメージでは、マニュアルページのインストールが無効になっています。これは、Fedoraの公式Dockerイメージにも当てはまります。
これを処理する最も簡単な方法は、どちらのシステムでも機能する次のsed
コマンドを使用することです。
sed -i -e '/tsflags=nodocs/s/^/#/' /etc/yum.conf /etc/dnf/dnf.conf || true
これにより、2つのファイルのいずれかを読み取ることができないというエラーメッセージが表示されますが、どちらかが存在する場合は、tsflags=nodocs
行をコメント化するように更新されます。末尾の|| true
を使用すると、スクリプトが停止しないように、エラーが発生してもコマンドが成功を返すことが保証されます。
これはRUN
のDockerfile
コマンドで使用できます。その場合は、さらにパッケージをインストールする前に使用する必要があります。すでにインストールされているパッケージの場合、通常それらに付属するマニュアルページはアンインストールされたままになり、マニュアルページを表示するにはパッケージを再インストールする必要があります。ベースシステムの多くのマニュアルページ(ls
など)はman-pages
パッケージに含まれていますが、git
などの他のパッケージには独自のマニュアルページが含まれており、再インストールする必要があります。
パッケージを削除してから再インストールすると、依存関係の問題が発生する可能性があります。これらを回避するには、代わりに次を使用します。
yum -y reinstall man-pages git