当出现种种原因必须要离线安装时,通常会选择两种方式:源码编译、rpm包安装。源码编译比较耗时且依赖编译环境,使用rpm包安装则更通用更简单。
有能联网的同系统机器?
在能联网的同系统机器上,只下载不安装,把软件 + 所有依赖 rpm 包全部下载到本地文件夹;再拷贝到离线服务器用 yum localinstall 批量安装。
方案一:yumdownloader(推荐,最简)
1. 先安装下载工具(联网机器执行)
yum install -y yum-utils2. 创建存放离线包目录
mkdir -p /tmp/offline_rpm
cd /tmp/offline_rpm3. 下载软件 + 全部依赖(关键参数 --resolve)
# 语法:yumdownloader --resolve 软件名
yumdownloader --resolve nginx
# 示例:下载mysql
yumdownloader --resolve mysql-server
# 下载多个包
yumdownloader --resolve nginx redis java-1.8.0-openjdk-devel
--resolve:自动递归下载所有依赖,实现全量包不加该参数只会下载主程序,缺依赖离线装会报错
4. 拷贝整个文件夹到离线服务器,批量安装
cd /tmp/offline_rpm
yum localinstall -y *.rpm方案二:yum install --downloadonly(不安装只下载)
适合批量下载、系统自带无需额外工具
1. 指定下载目录下载全量包
# --downloadonly 只下载不安装
# --downloaddir 指定保存目录
yum install -y nginx --downloadonly --downloaddir=/tmp/offline_rpm补充:如果软件已本地安装,会提示无更新,改用 reinstall
yum reinstall -y nginx --downloadonly --downloaddir=/tmp/offline_rpm方案 3:下载整组软件包组(如 Development Tools 开发工具组)
# 先查看包组名
yum grouplist
# 下载整个开发工具组所有rpm
yum groupinstall "Development Tools" --downloadonly --downloaddir=/tmp/dev_rpm离线服务器安装补充(无外网)
方式 A:yum localinstall(自动解决本地 rpm 依赖)
cd 存放rpm目录
yum localinstall -y *.rpm方式 B:rpm 强制安装(不推荐,容易依赖断裂)
rpm -ivh *.rpm --nodeps完整离线镜像方案(大批量服务器推荐)
如果需要多次离线部署,直接下载完整 repo 仓库:
1. 联网机器安装工具
yum install -y reposync createrepo2. 同步整个 base 仓库(全量系统包,体积巨大)
mkdir -p /mnt/centos7_repo
reposync -r base -p /mnt/centos7_repo3. 生成仓库元数据(离线 yum 源必须)
createrepo /mnt/centos7_repo
4. 拷贝到离线机器,修改 /etc/yum.repos.d/*.repo 指向本地 file:// 仓库
常见问题
1. 下载缺少依赖
必须带 --resolve(yumdownloader)或使用 --downloadonly,不要只单独下 rpm。
2. 已安装软件无法下载
使用 yum reinstall xxx --downloadonly。
3. 离线安装报缺少依赖
确认下载时带了依赖包,安装时用 yum localinstall 而非单纯 rpm。
4. CentOS 8+/Rocky/AlmaLinux
逻辑完全一致,工具名称不变;dnf 也支持相同参数:dnf download --resolve xxx
没有能联网的同系统机器?
方案一:Windows / 另一台不同 Linux 电脑下载对应 RPM(最常用)
前提:知道离线服务器系统版本(CentOS7/CentOS8/Rocky9 等)、CPU 架构(x86_64/aarch64)
1. 先在离线机器查询系统信息和软件依赖(记下来)
# 系统发行版
cat /etc/redhat-release
# 架构
arch
# 示例输出:CentOS Linux release 7.9.2009 (Core) x86_64
# 查看软件所有依赖(未安装也能查)
yum deplist nginx
# 或者查询rpm依赖(如果已有rpm包)
rpm -qpR xxx.rpm2. 在线 Windows/ubuntu 电脑下载 rpm 包
渠道 1:官方镜像站手动下载(推荐)
网站:
CentOS7:https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/
CentOS8:https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/Packages/
Rocky/AlmaLinux 同理用阿里镜像
操作:
搜索软件名,下载主 rpm
点开每个 rpm 详情,查看Requires依赖列表,逐个下载所有依赖 rpm
渠道 2:在线 rpm 搜索网站自动导出全套依赖
网站:
操作:
选择对应系统版本 + 架构
搜索包名,打开详情页,页面会列出所有依赖
逐个下载全部 rpm
3. U 盘拷贝到离线服务器安装
mkdir /tmp/rpm
mv U盘/*.rpm /tmp/rpm
cd /tmp/rpm
yum localinstall -y *.rpm方案二:下载完整系统 ISO 镜像(一劳永逸,推荐多台离线服务器)
ISO 自带系统基础所有 rpm,可做成本地 yum 源,不用到处找包
步骤 1:在线电脑下载对应系统完整 ISO
CentOS7:CentOS-7-x86_64-Everything.iso(不要 Minimal,包不全)
CentOS8/Rocky:Everything ISO
步骤 2:拷贝 ISO 到离线服务器,挂载并制作本地 yum 源
# 1. 挂载ISO
mkdir -p /mnt/iso
mount /root/CentOS-7-x86_64-Everything.iso /mnt/iso
# 2. 备份原有外网repo
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
# 3. 新建本地源repo文件
cat > /etc/yum.repos.d/local-iso.repo <<EOF
[local]
name=Local ISO Repo
baseurl=file:///mnt/iso
gpgcheck=0
enabled=1
EOF
# 4. 清理yum缓存
yum clean all
yum makecache使用
现在离线服务器可以直接执行 yum install nginx -y,自动从 ISO 里取所有依赖,无需联网、不用单独下载包。
缺陷
ISO 只包含系统自带基础软件;如果是第三方软件(nginx、mysql、redis、docker 等)ISO 里没有,还是要去镜像站单独下载。
补充关键注意点
架构必须匹配:x86_64 包不能装在 arm/aarch64 机器,反之亦然;
系统版本严格对应:CentOS7 的 rpm 不能给 CentOS8 用;
第三方软件(epel、docker、mysql)不在系统 ISO 内,必须单独下载 epel 源的 rpm 包;
离线安装优先用
yum localinstall,会自动排序依赖;rpm -ivh容易报依赖错误。