在 airgapped(离线)CentOS 6 系统上安装 yum 包

Deu*_*ina 5 centos yum repository offline-files centos6

我有一个 CentOS 6 系统,出于安全原因,它是气隙的。它可能从未连接到互联网,如果有,它已经很长时间没有更新了。

我想把所有的 .rpm 包放在一个驱动器上,这样它们就可以离线安装而无需查询互联网。但是,我在测试 VM 上遇到的问题是yum,即使指定了本地路径,它也会一直挂起并尝试从在线存储库更新。

另外,有没有办法使用/轻松获取包和该包的所有依赖项?目前,它仍然错过一些依赖(例如,当我拉了gcc-C ++ rpm时,它会抓住和,但不会拉,或)yum-utilsyumdownloadercppgcccloog-pplmpfrppl

我已经尝试过这样的解决方案,但我不能假设已经有一个依赖树,或者它yum是最新的。

在全新安装 docker 映像时,我第一次尝试运行 yum(禁用 Internet)时,我得到 Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

小智 5

如果您担心已安装版本和最新稳定版本之间的兼容性,您可能需要确定您的 centos 版本并/etc/redhat-release使用http://vault.centos.org/中的软件包,但请记住它们不包含任何安全性更新或错误修复。

要下载软件包 - 使用官方 redhat 说明: https: //access.redhat.com/solutions/10154

yum install yum-plugin-downloadonly
yum install --downloadonly --downloaddir=<directory> <package>
Run Code Online (Sandbox Code Playgroud)

或者

yum install yum-utils
yumdownloader --resolve
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下答案中的技术查看在要下载 rpm 的虚拟机上复制 yum 历史记录:https://unix.stackexchange.com/a/83115

最简单且行之有效的方法是:

yum-debug-dump => gives file.
yum-debug-restore <file-from-debug-dump>
Run Code Online (Sandbox Code Playgroud)

...其工作方式与获取/设置选择 dpkg 命令 AIUI 非常相似。另请注意,如果您要重播历史记录,可以使用:

yum history addon-info last saved_tx => gives file
yum load-tx <file-from-addon-info>
Run Code Online (Sandbox Code Playgroud)

...而不必自己解析它。

编辑:

要安装目录中的所有 rpm,cd如果 rpm -ivh *.rpm您想安装它们,或者rpm -Uvh *.rpm某些下载的文件比现有文件更新,并且您可以更新它们,则只需使用它们即可。