所以我有一台机器上安装了 CentOS Minimal,仅此而已。它是完全隔离的。这意味着以下内容:
- 它永远无法连接到另一台服务器或笔记本电脑
- 我唯一能连接到它的是一个 U 盘。
我的目标:
- 在其上运行
yum install docker
,以便它可以运行容器。
所以我在谷歌上搜索了如何下载一批 RPM 及其依赖项,然后将它们安装在离线系统上。
所以我在我的 macOS 笔记本电脑上做了这个:
$ docker run -v $PWD/pkg:/pkg centos:7
# mkdir /tmp/empty
# yum install -y \
--installroot /tmp/empty \
--releasever 7 \
--downloadonly \
--downloaddir /pkg \
docker
现在我在一个文件夹中有很多 RPM 文件。我把那个文件夹放在 U 盘上,然后把它粘到我隔离的 CentOS 机器上。然后我运行:
$ yum install /tmp/pkg/*
...
Error: Package: rpm-python-4.11.3-32.el7.x86_64 (installed)
Requires: rpm = 4.11.3-32.el7
Removing: rpm-4.11.3-32.el7.x86_64 (installed)
rpm = 4.11.3-32.el7
Updated By: rpm-4.11.3-35.el7.x86_64 (/rpm-4.11.3-35.el7.x86_64)
rpm = 4.11.3-35.el7
我还尝试createrepo
通过 docker 在我的 Mac 上运行该文件夹,将其放入存储库中(因为我createrepo
在隔离的机器上没有,也无法在其上安装任何东西)。但它给了我完全相同的错误。
那么我在这里有什么选择呢?在我看来,由于依赖地狱,我实际上必须镜像整个 CentOS 存储库。如果我想要一个来自 EPEL 的包裹,我也必须镜像那个。仅仅为了在隔离的机器上安装 docker 就需要传输和存储大量 GB。
有什么可行的解决方案吗?
额外问题:如果我在隔离的机器上运行 RHEL 而不是 CentOS 会怎样?