AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 954201
Accepted
Christoffer Reijer
Christoffer Reijer
Asked: 2019-02-16 12:01:01 +0800 CST2019-02-16 12:01:01 +0800 CST 2019-02-16 12:01:01 +0800 CST

如何在完全隔离的机器上安装 RPM?

  • 772

所以我有一台机器上安装了 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 会怎样?

centos
  • 2 2 个回答
  • 465 Views

2 个回答

  • Voted
  1. Best Answer
    Aaron Copley
    2019-02-18T18:21:24+08:002019-02-18T18:21:24+08:00

    您最好的选择是在该 USB 磁盘上维护一个更完整的镜像。您可以使用reposync将远程存储库镜像到您的存储。定期运行它以使其保持最新。然后,用于createrepo创建/更新您的存储库元数据。最后,在隔离主机上,为该 USB 磁盘的挂载点配置一个 yum 存储库。

    [usb]
    name=Airgaps Are Fun
    baseurl=file:///mnt/usbdisk
    enabled=1
    gpgcheck=1
    gpgkey=file:///mnt/usbdisk/gpgkey
    

    分解时,其他任何事情都将是一场噩梦。

    • 2
  2. duct_tape_coder
    2019-02-16T14:00:49+08:002019-02-16T14:00:49+08:00

    我认为您可以运行rpm -q -R -p <package.rpm>(可能有 yum 等效项)来查看包所需的依赖项。您可以将该输出通过管道传递给下载这些依赖项的调用。显然,您需要在启用网络的机器上执行此操作,但您可以将生成的文件移动到断开连接的机器并迭代安装它们。我想订购它们可能是个问题,但你会拥有所有必需的物品,如果你只是多次运行安装,你最终会得到一切。

    您提到了 docker 和 CentOS,所以不确定您是否已经看过这个问题:Installing Docker on an isolated (no internet) Centos 7 box?

    • 0

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve