yum会自动下载系统所需要的依赖包rpm进行安装,但需要联网,当需要离线安装时,可使用下述方法:
- 在一台联网机器上利用yum工具下载rpm包
# 安装yum包下载工具
yum install yum-utils -y
# 例如我需要安装httpd的安装包
yumdownloader httpd --resolve --destdir=/home/httpd
- 复制/home/httpd内所有文件到离线服务器目录下,使用以下指令进行安装
rpm -ivh --replacefiles *.rpm
问题
- 联网服务器可能有已经安装的依赖,但离线服务器没有这个依赖,但yumdownloader只会下载联网服务器上没有的依赖
解决:
1. 指定一个空目录作为根目录,这样yum下载的时候就不会有任何基础依赖,会下载所有依赖。
但这种办法似乎首先需要给这个installroot设置baserepo,没有深究
sudo yum install --installroot=</path/to/tmp_dir> --downloadonly --downloaddir <rpm_dir> <package>
2. 使用docker启动一个新centos容器,在容器里下载rpm包,再从容器中将包复制出来。这种办法下载的环境相对干净,所以下载到的基础依赖包只缺失了centos基础的一些依赖,可以满足大部分情况了
# 启动容器并进入
docker run --rm --name centos -it centos:7 bash
## 以下为容器内操作
yum install yum-utils -y
mkdir -p /home/httpd
yumdownloader httpd --resolve --destdir=/home/httpd
然后新开一个命令窗口,不要关闭之前的窗口
# 将容器内下载得到的rpm包复制出来
docker cp centos:/home/httpd ./