目录

离线安装包及依赖处理

很多内网环境需要离线安装软件,就需要我们在可以上网的服务器上将需要安装的软件的相应安装包及其依赖下载下来,传输到离线机器,再安装。其中下载和处理依赖关系可能比较麻烦,所以本文特做记录。

shell

# 查看依赖列表
yum deplist docker-ce

repotrack 是一个 yum-utils 包中的工具,用于下载指定软件包及其所有依赖关系,以便在没有网络连接的环境中安装它们。

shell

yum install yum-utils -y
// 下载 docker-ce 全量依赖包
repotrack docker-ce

如果依赖较多且在线环境和离线环境相同,就不需要下载全量依赖,只需要下载主软件包和基于你当前环境缺少的依赖。更多时候我们使用这种方法。

方法1:使用 yumdownloader

shell

yum install yum-utils -y
// --resolve 下载依赖包 --destdir 指定目录,默认当前目录
yumdownloader --resolve --destdir=/tmp nginx

方法2:yumdownloadonly 插件

shell

// 安装 yum 的 downloadonly 插件
yum install yum-download -y
yum -y  install nginx --downloadonly --downloaddir=.

方法1:localinstall 可以尝试解决并安装所有依赖 (推荐)

shell

yum localinstall ./rpm-path/*.rpm 

方法2: rpm

shell

rmp -ivh <package-name-1.rpm> <package-name-2.rpm> ...

# -U 升级或安装 -v 详细模式 -h 显示进度 --force 强制安装 --nodeps 忽略依赖性检查
rpm -Uvh --force --nodeps *.rpm

使用 rpm 请确保按照正确的顺序安装,以满足依赖关系。

如果缺少依赖,重复下载、传输、安装的步骤,直到所有依赖都被满足。

如果遇到如下问题

shell

---> 软件包 audit-libs.x86_64.0.2.8.4-4.el7 将被 升级
--> 正在处理依赖关系 audit-libs(x86-64) = 2.8.4-4.el7,它被软件包 audit-2.8.4-4.el7.x86_64 需要
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"

即,audit-libs-2.8.4 将被升级,但是缺少依赖,可以使用如下命令查看系统已经安装的软件包,

shell

rpm -qa | grep audit
 
# output
audit-libs-python-2.8.4-4.el7.x86_64
audit-libs-2.8.4-4.el7.x86_64
audit-2.8.4-4.el7.x86_64

然后去这个网址下载升级后的软件包(注意对应的 centos 版本,这里是 centos 7):

https://centos.pkgs.org/7/centos-x86_64/audit-2.8.5-4.el7.x86_64.rpm.html

一般下载链接为: http://mirror.centos.org/centos/7/os/x86_64/Packages/audit-2.8.5-4.el7.x86_64.rpm

然后安装即可。

参考:yum 下载全量依赖 rpm 包及离线安装