최소한의 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-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 가상 파일 시스템의 이상이 아닐 수도 있습니다.

이것의 가장 좋은 부분은 바로이 순간에 내가 원했던 것은 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-utils바이너리를 찾을 수 있는데 왜 RPM 에 포함되어있는 매뉴얼 페이지를 찾을 수 없습니까?
  2. man-pagesRPM을 설치하면 해당 RPM에 있어야하는 파일이 설치되지 않습니까?

업데이트 :아론 Marasco의 대답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하는 것입니다.
RichVel

답변:


12

귀하의 이미지는 아마이nodocs 냠 구성 (참조, 설정 트랜잭션 플래그 /etc/yum.conf).

매뉴얼 페이지를 원하는 패키지를 다시 설치하기 전에 전체적으로 (또는 yum 명령 행에서) 제거 할 수 있습니다.

예를 들면 다음과 같습니다.

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

이것이 남-서밋의 답변--setopt=tsflags='' 에서 제안 된 것이어야합니까 ? ( for )=-
David Moles

1
@DavidMoles, 그렇습니다. 오타였습니다. 올바른 스위치 구문이 참조 된 프로젝트 원자 문서에도 사용되었습니다.
maxschlepzig

감사. 방금 수정했지만 6 자 제한입니다. :)
David Moles

왜 shadow-utils를 다시 설치해야합니까?
Tiina

@Tina 이것은 명령을 제공하는 패키지이기 때문에 useradd(질문에서 참조 된) 패키지입니다 .
maxschlepzig

5

여기에 아무것도 효과가 없었으며 그 위에 허용 된 답변에 오타가 포함되어 있습니다. 나는 거기에 의견을 말할 충분한 담당자가 없으므로 누군가를 도울 수 있도록 여기에 답변으로 추가하고 있습니다.

매뉴얼 페이지와 함께 패키지를 설치하려면 다음을 사용하십시오.

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정상적으로 사용할 수 있습니다 .

출처


+1, nodocs 라인을 주석 처리하기 위해sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
michael

2

나는 이것이 오래된 질문이라는 것을 알고 있지만 이것을 추적하는 데 걸린 시간을 감안할 때 결국 다른 사람에게 유용 할 것입니다.

문제는 docker 이미지에서 RPM이 구성되는 방식과 관련이 있습니다. 먼저 excludedocs지시문이 RPM 구성에 다음과 같이 나열되어 있는지 확인하십시오 .

# rpm --showrc | grep docs

그것이 있다면 내 경우에 그것을 지정하는 파일을 찾아서 /etc/rpm/macros.imgcreate제거해야합니다.

그런 다음 Yum은 모든 맨 페이지 설치를 예상대로 수행해야합니다 ( nodocs tsflag위에 언급 되지 않은 경우) .


1

Docker 이미지가 극도 로 잘립니다. RPM이 설치된 매뉴얼 페이지를 제거한다고 생각 합니다. 로 확인할 수 있습니다 rpm -V shadow-utils. 매뉴얼 페이지가 없기 때문에 델타 RPM을 사용하여 패키지를 업그레이드하는 데 문제가 있음을 알고 있습니다.

안타깝게도 맨 페이지를 얻는 유일한 방법은 RPM을 강제로 다시 설치하거나 RPM에서 수동으로 추출하여 제자리에 놓는 것입니다.

이 사이트 도 참조하십시오 .


2
예. yum reinstall shadow-utils그것을 고칠 것입니다.
msuchy

@ msuchy 방금 시도했지만 전혀 그렇지 않습니다. 아마도 man-pages제대로 설치하지 못하는 것과 관련이 있습니까?
David Moles 2012

@ aaron-d-marasco 처음부터 설치되지 않은 이유를 설명하지만 설치하려고 할 때 무슨 일이 일어나고 있는지 설명하지 않습니다 man-pages.
David Moles 2012

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.