최소한의 Centos 7 Docker 이미지가 있고 Dockerfile을 디버깅하는 데 도움이 되는 몇 가지 매뉴얼 페이지를 가져오려고 합니다. 기본적으로는 다음과 같은 내용이 많지 않습니다.
# man ls
No manual entry for ls
모든이 서버에 잘못된 답변이 있습니다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-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
그래서 내 질문은 다음과 같습니다
shadow-utils
바이너리를 찾을 수 있는데 왜 RPM에 포함되어야 하는 매뉴얼 페이지를 찾을 수 없습니까?- RPM을 (성공적으로) 설치해도
man-pages
RPM에 있어야 하는 파일이 설치되지 않는 이유는 무엇입니까?
고쳐 쓰다:모든Aaron Marasco의 답변그리고무스키의 코멘트, 나는 노력했다 yum reinstall shadow-utils
. 와 마찬가지로 yum install man-pages
성공적으로 완료된 것처럼 보이지만 실제로는 에 파일이 저장되지 않습니다 /usr/share/man/
.
답변1
당신의 이미지이있을 수 있습니다nodocs
yum 구성에 설정된 트랜잭션 플래그( 참조 /etc/yum.conf
)
원하는 매뉴얼 페이지가 있는 패키지를 (재)설치하기 전에 전체적으로(또는 yum 명령줄에서) 제거할 수 있습니다.
예를 들어:
yum --setopt=tsflags='' reinstall shadow-utils
답변2
여기에는 아무 효과가 없었으므로 누군가에게 도움이 될 수 있도록 다른 답변을 추가했습니다.
매뉴얼 페이지가 포함된 패키지를 설치하려면 다음을 사용하십시오.
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
.
답변3
이것이 오래된 질문이라는 것을 알고 있지만 이 문제를 추적하는 데 소요된 시간을 고려하면 결국 다른 사람에게 도움이 될 수도 있습니다.
이 문제는 Docker 이미지에서 RPM이 구성되는 방식과 관련이 있습니다. 먼저 excludedocs
아래와 같이 명령이 RPM 구성에 나열되어 있는지 확인하십시오.
# rpm --showrc | grep docs
거기에 있으면 그것을 지정하는 파일을 찾아서(내 경우에는 아래에 있음) /etc/rpm/macros.imgcreate
삭제해야 합니다.
그런 다음 Yum은 예상대로 모든 매뉴얼 페이지 설치를 수행해야 합니다(위의 내용이 없다고 가정 nodocs
tsflag
).
답변4
도커 이미지는극도로그것을 벗겨내십시오. 나는 그들이 매뉴얼 페이지를 제거했다고 믿습니다뒤쪽에RPM이 설치되었습니다. 를 사용하여 이를 확인할 수 있습니다 rpm -V shadow-utils
. 매뉴얼 페이지 누락으로 인해 증분 RPM을 사용하여 패키지를 업그레이드하는 데 문제가 있다는 것을 알고 있습니다.
안타깝게도 맨페이지를 얻는 유일한 방법은 RPM을 강제로 다시 설치하거나 RPM에서 수동으로 추출하여 적절한 위치에 넣는 것입니다.
당신은 또한 볼 수 있습니다이 웹사이트아마도.