建议直接跳转到最佳实践
参考 https://blog.csdn.net/wtl1992/article/details/122256926
还是会缺少依赖,猜测该方法或许需要纯净的环境(未装过安装包的相关依赖)。
可以开一个新的虚拟机进行操作
在最佳实践中提供docker思路下载rpm离线安装包
- 在通互联网的机器上配置互联网yum源
- 安装#yum -y install expect 工具
- 缓存你需要安装的rpm,但是不安装,使用yum主要是自动解决依赖关系,把相关的依赖包一网打尽。
- 使用命令:
● mkdir -p /YOUR/DOWNLOAD/PATH
● yum install --downloadonly --downloaddir=/YOUR/DOWNLOAD/PATH - 将需要的rpm包下载到/tmp/yum中,复制到你的环境中,使用
● rpm -ivh * - 如果rpm -ivh *不行对的话,可以使用如下命令
● rpm -Uvh *.rpm --nodeps --force
最佳实践
由于下载rpm包时,本地已有的依赖不会被重复下载(? 猜测)
建议通互联网的机器上的docker里起一个纯净的centos7
拉取centos7
docker pull centos:centos7
启动centos7容器,挂载/root/rpm到宿主机
docker run --privileged --name=mycentos7 -itd -v /root/rpm:/root/rpm centos:centos7
进入容器 不要安装任何包,以免少下载依赖。可换源。
docker exec -it mycentos7 /bin/bash
cd /root/rpm
编写脚本getrpm.sh如下
vi getrpm.sh
#!/bin/bash
TOP_DIR=$(cd `dirname $0`; pwd)
while [ "$#" != 0 ];do
# 下载路径
DOWNLOAD_PATH=$1
# 删除历史下载包
rm -rf $DOWNLOAD_PATH.tar.gz
mkdir $DOWNLOAD_PATH
# 创建安装脚本
echo "rpm -Uvh *.rpm --nodeps --force">$DOWNLOAD_PATH/install.sh
# 加执行权限
chmod 777 $DOWNLOAD_PATH/install.sh
# 拉取相关rpm包以及所有依赖
yumdownloader --destdir=$DOWNLOAD_PATH --resolve $1
# 打包
tar -zcvf $1.tar.gz $DOWNLOAD_PATH/
# 删除临时下载目录
rm -rf $DOWNLOAD_PATH
shift
done
容器内执行sh /root/rpm/getrpm.sh aaa bbb
即可在宿主机的/root/rpm中得到aaa和bbb对应压缩包,例如sh /root/rpm/getrpm.sh gcc-c++
将压缩包放到想要离线安装的机器上解压
tar -zxvf xxx.tar.gz
cd xxx
./install.sh
即可完成安装