yum 下载全量依赖 rpm 包及离线安装(终极解决方案)

简介

通常生产环境由于安全原因都无法访问互联网。此时就需要进行离线安装,主要有两种方式:源码编译、rpm包安装。源码编译耗费时间长且缺乏编译环境,所以一般都选择使用离线 rpm 包安装。

验证环境

Centos 7.9 最小化安装,预先修改使用阿里云yum

查看依赖包

可以使用“yum deplist”命令来查找 rpm 包的依赖列表。例如,要查找“ansible”rpm的依赖包:

# yum deplist kubernetes
已加载插件:fastestmirror, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: my.mirrors.thegigabit.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包:kubernetes.x86_64 1.5.2-0.7.git269f928.el7
   依赖:kubernetes-master = 1.5.2-0.7.git269f928.el7
   provider: kubernetes-master.x86_64 1.5.2-0.7.git269f928.el7
   依赖:kubernetes-node = 1.5.2-0.7.git269f928.el7
   provider: kubernetes-node.x86_64 1.5.2-0.7.git269f928.el7
软件包:kubernetes.x86_64 1.5.2-0.7.git269f928.el7
   依赖:kubernetes-master = 1.5.2-0.7.git269f928.el7
   provider: kubernetes-master.x86_64 1.5.2-0.7.git269f928.el7
   依赖:kubernetes-node = 1.5.2-0.7.git269f928.el7
   provider: kubernetes-node.x86_64 1.5.2-0.7.git269f928.el7

方案一(推荐):repotrack

# 安装yum-utils
$ yum -y install yum-utils
# 下载ansible,包含主软件包和软件相关的依赖包全量下载下来。(不会因环境不同而缺失软件依赖包)
$ repotrack ansible

方案二:yumdownloader

# 安装yum-utils
$ yum -y install yum-utils
# 下载 ansible 依赖包
$ yumdownloader --resolve --destdir=/tmp ansible

参数说明:

  • --destdir:指定 rpm 包下载目录(不指定时,默认为当前目录)

  • --resolve:下载依赖的 rpm 包。

注意

仅会将主软件包和本地环境中未安装的软件依赖包下载下来。

方案三:yum 的 downloadonly 插件

# 安装插件
$ yum -y install yum-download
# 下载 ansible 依赖包
$ yum -y install ansible --downloadonly --downloaddir=/tmp

注意

与 yumdownloader 命令一样,也是仅会将主软件包和。

离线安装 rpm 或者 构造repo本地源安装(二选一)

根据软件依赖情况,二选一使用

方法一:(初始化部署,安装都是相同的软件)

# 离线安装
$ rpm -Uvh --force --nodeps *.rpm

方法二(完整的一套平台软件,不同功能节点安装不同软件)

#构造repo本地源安装,示例中安装包下载到/root/Kubernetes
yum install -y createrepo
cd /root/Kubernetes
createrepo .
#移走多余的repo文件,让其使用本地源安装软件
mv /etc/yum.repos.d/*.repo /opt  
#构造repo本地源文件
cat > /etc/yum.repos.d/k8s-package.repo <<EOF
[k8s-package]
name=k8s-package
baseurl=file:///root/Kubernetes
enable=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF
#清理缓存
yum clean all
yum repolist

参考资料

版权声明:
作者:WaterBear
链接:https://l-t.top/1857.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>