rpm包及其全依赖的下载和离线安装
汗族小子
编辑于 2023年02月09日 00:33
收录于文集
共3篇

在某些情况下,我们只能离线安装rpm包,但是通常又不一定能找到他们的完整依赖,我之前经常自己试着下载一个软件包,然后到离线环境之后还是不能安装,因为缺少依赖。这里我在网上学习了一些方法来下载他们的依赖。

一、手动下载

显然,你可以自己去一些网站下载rpm包嘛,还可以自己去软件源下载软件包,对于一个rpm包的依赖,你可以直接去yum查找,或者在有网络的及其上安装可以看得到提示。

通常的阿里(https://mirrors.aliyun.com/centos/)他们都有软件仓库都可以从网页上去下载,依赖自己查找之后去下载就行。

还可以去rpmforge等国外仓库的网页版本下载。

还可以去https://pkgs.org/download/glibc这种网站去查找包的信息和下载,这些网站也会给出包依赖。

手动下载的好处在于,你想下载啥就下载啥,坏处也在于,你想下载啥,就下载啥,你想不到就没了。。。

二、使用yum带的工具在软件源下载

其实yum带的有工具来做这个,这里我们先假定在一台可以联网的机器上已经配置好了yum源,现在以VLC为例来操作。

1。使用yum 的 downloadonly 插件。

用法:

代码块
Shell
自动换行
复制代码
# 安装插件
$ yum -y install yum-download
# 下载 vlc 及其依赖包
$ yum -y install vlc --downloadonly --downloaddir=/home/test/
复制成功

2. 使用yumdownloader ,这玩意儿也是yum套件里面的,一样的可以如下用法:

代码块
Shell
自动换行
复制代码
# 安装yum-utils
$ yum -y install yum-utils
# 下载 vlc 及其依赖包
$ yumdownloader --resolve --destdir=/home/test vlc
复制成功

需要注意的是,以上这俩都仅会将主软件包和基于你现在的操作系统所缺少的依赖关系包一并下载。

正常情况下,这俩会自动下载最新版的,如果是特定版本的,估计要加上版本号,这个我没试过,你们可以试试。

3. 使用repotrack

虽然离线环境的操作系统和你一样,但是基础依赖还有点差别,可能要多一些依赖包,以上这俩只是基于你现在的环境来找缺少的依赖,如果要全量下载依赖呢?我找到了下面这个操作。

代码块
Shell
自动换行
复制代码
# 安装yum-utils
$ yum -y install yum-utils

# 下载 vlc 和全量依赖包
$ repotrack vlc
复制成功

实操

所以可以看到,这家伙给我下载了一大把的依赖,可把我乐坏了,这下估计是没问题了,可以去离线环境安装了。实在不行把这些rpm做成一个本地源来用yum装也可以。只需要自己建立以下index然后作为本地源载入即可。这块我们有空可以聊聊。

三。本地安装

顺带一提,如何本地安装rpm包:

代码块
Shell
自动换行
复制代码
#使用rpm命令安装(那么请你自己搞清楚依赖顺序哈)
rpm -ivh ./aaa.rpm
#使用yum安装(如果源里面有依赖可以帮你直接装了)
yum install ./aaa.rpm
复制成功

PS.现代化的用dnf或者其他包管理器的兄弟估计还是有类似的方法的,这里只是对古老的centos7做考古啦。

PS.如果用appimage或者snap等带依赖的包管理的话就不用考虑这些了,但是他们自然又有他们的忧愁咯。