【linux-rpm】下载rpm离线安装包并解决依赖包缺少的问题

转载自:下载rpm离线安装包并解决依赖包缺少的问题

建议直接跳转到最佳实践

参考 https://blog.csdn.net/wtl1992/article/details/122256926
还是会缺少依赖,猜测该方法或许需要纯净的环境(未装过安装包的相关依赖)。
可以开一个新的虚拟机进行操作
在最佳实践中提供docker思路下载rpm离线安装包

  1. 在通互联网的机器上配置互联网yum源
  2. 安装#yum -y install expect 工具
  3. 缓存你需要安装的rpm,但是不安装,使用yum主要是自动解决依赖关系,把相关的依赖包一网打尽。
  4. 使用命令:
    ● mkdir -p /YOUR/DOWNLOAD/PATH
    ● yum install --downloadonly --downloaddir=/YOUR/DOWNLOAD/PATH
  5. 将需要的rpm包下载到/tmp/yum中,复制到你的环境中,使用
    ● rpm -ivh *
  6. 如果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中得到aaabbb对应压缩包,例如sh /root/rpm/getrpm.sh gcc-c++

将压缩包放到想要离线安装的机器上解压

tar -zxvf xxx.tar.gz
cd xxx
./install.sh

即可完成安装

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值