Docker

yum 聲明包已安裝,但 docker 中沒有文件

  • January 13, 2020

我有一些奇怪的行為 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!

現在這個軟體包應該按照https://rpmfind.net/linux/RPM/centos/7.7.1908/x86_64/Packages/centos-indexhtml-7-9.el7將文件安裝到 /usr/share/doc/HTML .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 寫入路徑?

docker 中的yum配置略有不同:在同一個/etc/yum.conf文件中,您會發現:

tsflags=nodocs

這意味著軟體包不會安裝它們的文件。在 docker 鏡像中,大多數人的目標是擁有一個盡可能小的工作應用程序,因此刪除文件文件。

通過rpm直接使用,您將繞過此yum配置。

引用自:https://serverfault.com/questions/998497