【Linux】yum如何下载离线安装包?(详解)
原创2022年7月18日约 1346 字大约 4 分钟

👨🎓博主简介
🏅CSDN博客专家
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
前言
相信大家也遇到过这种问题,在没有外网的情况下,想安装一个服务却安装不了,这期我就教大家如何如何下载离线安装包,在内网中使用;
第一种方法:使用yum + 参数安装 -- 【推荐】包含依赖
- 首先先讲解一下yum下载离线安装包的参数及解析;
yum下载离线安装包的参数及解析;
参数 | 解析 |
---|---|
- -install | 下载某个命令,直接安装 |
- -downloadonly | 仅下载安装包,不进行安装 |
- -downloaddir | 指定下载的安装包的存放路径 |
Centos7 yum直接下载安装lrzsz命令,下载完并不会有安装包残留,直接就会安装上;
yum -y install lrzsz
Centos7 yum下载离线安装包mysql,不进行安装,只需要离线安装包,并且放到/data/mysql目录中;
下载命令:
yum -y install gcc gcc-c++ --downloadonly --downloaddir=./
- 详情下载步骤:
#首先我们先创建一个/data/mysql目录
[root@zabbix-5 mysql]# mkdir /data
[root@zabbix-5 mysql]# mkdir /data/mysql
#然后我们来下载离线安装包
[root@zabbix-5 mysql]# yum -y install mysql --downloadonly --downloaddir=/data/mysql
#然后进入/data/mysql目录查看
[root@zabbix-5 mysql]# cd /data/mysql
[root@zabbix-5 mysql]# ls
mariadb-5.5.68-1.el7.x86_64.rpm mariadb-libs-5.5.68-1.el7.x86_64.rpm
然后咱们可以把rpm包下载到本地,之后使用的时候就可以上传到内网环境中,直接安装就可以了。
第二种方法:使用 yumdownloader 命令【只下载你需要的安装包(不包含依赖)】
- 要有这个命令,需要先安装一个命令:
yum-utils
sudo yum -y install yum-utils
这个命令安装完之后就会有yumdownloader
命令了,这时候我们使用这个命令去下载离线包;
- yumdownloader 用法
yumdownloader --destdir=要下载的路径 要下载的安装包
- yumdownloader 参数
参数 | 解析 |
---|---|
--resolve | 此选项会分析指定的软件包的依赖关系,并自动下载和保存这些依赖软件包。注意,如果系统内该依赖包已安装,运行命令时将不会下载已安装的依赖包。 |
--enablerepo=<repository> | 指定yum源,如果不知可以省去此参数。 |
--destdir=<directory> | 指定下载的软件包存放路径,默认下载到当前目录中。 |
- 下载一个mysql安装包且不安装服务,把安装包存到
/data/mysql/
目录下;
yumdownloader --destdir=/data/mysql/ mysql
下载完之后切换到这个目录看一下,可以看到离线包了。

两者区别及优缺点:
举实例两者下载的区别:
yum -y install gcc gcc-c++ --downloadonly --downloaddir=./

yumdownloader --destdir=./ gcc gcc-c++

两者的区别很明显了,yumdownloader下载的少,是因为他不会下载依赖包,只会下载你需要的包;
两者优缺点:

- 总结:
各有利弊,还是推荐使用第一种方式。
批量下载软件离线包及批量安装【推荐使用】
使用脚本来实现批量下载及安装
- download.sh(批量下载脚本)
#!/bin/bash
# 定义要下载的软件包列表
packages=(
"vim"
"unzip"
"tar"
"make"
"net-tools"
"gcc"
"gcc-c++"
"locales"
)
# 遍历软件包列表,下载每个软件包
for package in "${packages[@]}"; do
# 创建以软件包名命名的目录
mkdir -p "$package"
# 使用yum下载软件包
echo "正在下载 $package ..."
yum -y install $package --downloadonly --downloaddir=./$package
done
echo "所有软件包下载完成!"
- install.sh(批量安装脚本)
#!/bin/bash
# 定义要安装的软件包列表
packages=(
"vim"
"unzip"
"tar"
"make"
"net-tools"
"gcc"
"gcc-c++"
"locales"
)
# 遍历软件包列表,安装每个软件包
for package in "${packages[@]}"; do
# 进入目录
cd "$package"
# 使用rpm安装软件包
echo "正在安装 $package ..."
rpm -ivh * --nodeps --force
# 返回上级目录
cd ..
done
echo "所有软件包安装完成!"