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