我遇到了 yum 与 rpm 之间的一些奇怪行为,两者都声称要安装,但只有 rpm 真正创建了文件,而 yum 只是声称已安装。我不知道我做错了什么,以及为什么文件无法通过 yum 在 docker 中安装。
脚步:
docker run --rm -it centos:7
设置 yum 缓存,以便我们可以通过 yum 和 rpm 使用同一个文件
vi /etc/yum.conf
-> set keepcache=1
现在开始 yum install
yum install -y centos-indexhtml
修剪输出:
Installed:
centos-indexhtml.noarch 0:7-9.el7.centos
Complete!
现在这个包应该按照以下要求将文件安装到 /usr/share/doc/HTML 中https://rpmfind.net/linux/RPM/centos/7.7.1908/x86_64/Packages/centos-indexhtml-7-9.el7.centos.noarch.html
ll /usr/share/doc/HTML
ls: cannot access /usr/share/doc/HTML: No such file or directory
因此,让我们从 yum 中卸载此包,并使用 yum 缓存,然后直接从 RPM 安装
yum remove -y centos-indexhtml
(trimmed output)
Removed:
centos-indexhtml.noarch 0:7-9.el7.centos
Complete!
rpm -Uvh /var/cache/yum/x86_64/7/base/packages/centos-indexhtml-7-9.el7.centos.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:centos-indexhtml-7-9.el7.centos ################################# [100%]
并验证文件是否存在:
ll /usr/share/doc/HTML
total 16
drwxr-xr-x 2 root root 4096 Jan 10 18:18 en-US
drwxr-xr-x 2 root root 4096 Jan 10 18:18 img
-rwxr-xr-x 1 root root 4833 May 16 2014 index.html
我使用 yum 时做错了什么?我没有收到任何错误,只是没有通过 yum 写入路径?
答案1
docker 中的配置yum
略有不同:在同一个/etc/yum.conf
文件中你会发现:
tsflags=nodocs
这意味着软件包不会安装其文档。在 docker 镜像中,大多数人的目标是拥有一个尽可能小的可运行应用程序,因此删除了文档文件。
通过直接使用rpm
,您可以绕过此yum
配置。