利用Yumdownloader为内网机器下载包和所需依赖(docker)
Table of Contents
使用docker生成与目标操作系统环境一致的环境
首先,确保你已经安装了 Docker。如果没有,请先安装 Docker。假如想在内网的centos7.9.2009的系统上通过储存库安装node,首先在centos Tags | Docker Hub找到所需的镜像,例如下图:
docker pull centos:7.9.2009
Bash使用命令拉取 CentOS 7.9.2009 镜像:
docker run -it --name my_centos -v ~/home/down:/data centos:7.9.2009
Bash然后,运行容器并将主机的 home/down 目录映射到容器中的某个目录。例如,你可以将主机的 home/down 目录映射到容器的 /data 目录,这将在后台运行一个名为 my_centos 的容器,并将主机的 home/down 目录映射到容器的/data 目录。你可以在容器中访问和修改 home/down 目录中的文件。
在容器中下载包以及其依赖
docker exec -it my_centos /bin/bash
sudo yum install yum-utils -y
Bash执行上述命令进入容器并安装 yum-utils 工具:
# yumdownloader 语法
yumdownloader [options] package1 [package2] [package..]
Bash参数 | 说明 |
---|---|
-q | 静默执行 |
-v | 显示执行细节 |
-y | 所有的选择都答yes |
--downloadonly | 不更新,只下载 |
--destdir | 保存路径,默认为当前路径 |
--resolve | 解析依赖关系并下载所需的包 |
sudo yumdownloader --resolve --destdir=/data node
Bash使用以上命令从外网机器的容器内下载 node 软件包及其依赖项:
复制下载的rpm文件到内网机器
执行完1 2步骤后在外网的宿主机/home/down目录能看到下载的内容,复制内网机器中安装即可,命令如下:
rpm -Uvh --force --nodeps *.rpm
Bash你实际上在执行以下操作:
-Uvh:这部分指定了 RPM 包的安装选项:
-U 表示升级(或安装)软件包。
-v 表示显示详细的安装进度。
-h 表示以哈希符号(#)显示进度。
--force:这个选项强制安装软件包,即使已经安装了相同版本的软件包。这可能会覆盖现有的文件或配置。
--nodeps:这个选项告诉 RPM 忽略依赖关系检查。通常,RPM 包的安装会检查是否满足了所有依赖关系,如果没有,安装将失败。使用 --nodeps 可以跳过这一步,但要小心,因为这可能导致软件包之间的依赖关系问题。
*.rpm:这部分表示通配符,用于匹配当前目录中的所有 RPM 文件。这意味着你正在安装当前目录中的所有 RPM 软件包。
请注意,使用 --force 和 --nodeps 选项需要谨慎,因为它们可能导致不稳定的系统状态。只有在你确信知道自己在做什么的情况下才应该使用这些选项。
来自GPT-4的解释