在离线 CentOS 6 系统上安装 yum 软件包

在离线 CentOS 6 系统上安装 yum 软件包

我有一个 CentOS 6 系统,出于安全原因,它被隔离了。它可能从未连接到互联网,即使它连接了,也已经很长时间没有更新了。

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

另外,有没有办法轻松地抓取包裹并所有依赖项对于该包使用yum-utils/ yumdownloader?目前,它仍然缺少一些依赖项(例如,当我拉取 gcc-c++ rpm 时,它会抓取cppgcc不会拉取cloog-pplmpfrppl

我已经尝试过像这样的解决方案,但我不能假设已经存在依赖关系树,或者它yum是最新的。

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

答案1

如果你担心已安装版本与最新稳定版本之间的兼容性,你可能需要确定你的 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>

或者

yum install yum-utils
yumdownloader --resolve

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

最简单的方法,并且已经长期有效:

yum-debug-dump => gives file.
yum-debug-restore <file-from-debug-dump>

...其工作原理与 get/set 选择 dpkg 命令 AIUI 非常相似。另请注意,如果您正在重播历史记录,则可以使用:

yum history addon-info last saved_tx => gives file
yum load-tx <file-from-addon-info>

...而不必自己解析。

编辑:

要从目录安装所有 rpm,cd请进入该目录并简单地使用, rpm -ivh *.rpm如果您想安装它们,或者rpm -Uvh *.rpm如果某些下载的文件比已经存在的文件更新,并且您可以更新它们。

答案2

编辑:不,没有什么事情是这么容易的。在新的堆栈上仍然出现此错误: Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

如果我让 yum 访问互联网足够长的时间来完成自我配置,则以下操作有效:

首先,我能够通过调用以下代码来下载所有依赖包:

yum install -y --downloadonly --downloaddir=$pkgdir <package>

yum reinstall -y --downloadonly --downloaddir=$pkgdir <package>

强制任何已安装的软件包提取其.rpm依赖项。然后,一旦我获得了软件包的 tarball,我就会将其放在新系统上。

首先,我运行sed -i 's/enabled=1/enabled=0/' '/etc/yum/pluginconf.d/fastestmirror.conf'禁用 fastmirror 插件。

然后,我可以通过 cd 进入包含软件包的目录来安装我需要的所有软件包,然后小心地调用

yum install --disablerepo=\* packag*

按照依赖项要求的顺序。所以看起来有点像

yum install --disablerepo=\* epel*
yum install --disablerepo=\* ius*
yum install --disablerepo=\* libstd*
yum install --disablerepo=\* mpfr*
yum install --disablerepo=\* cpp*
yum install --disablerepo=\* libgcc*
yum install --disablerepo=\* libgomp*
yum install --disablerepo=\* libg*
yum install --disablerepo=\* ppl*
yum install --disablerepo=\* cloog*
yum install --disablerepo=\* gcc*
yum install --disablerepo=\* atlas*
yum install --disablerepo=\* python*

瞧!我能够在完全隔离的系统上运行 python3.5。

相关内容