Linux中常见的离线安装方式(Ubuntu和CentOS)

|--------|-----------|-----------|
| 对比项 | Ubuntu | CentOS |
| 包格式 | deb | rpm |
| 底层工具 | dpkg | rpm |
| 推荐离线方案 | 本地 APT 仓库 | 本地 YUM 仓库 |
| 单包安装 | dpkg -i | rpm -ivh |
| 自动依赖 | apt | yum/dnf |

Centos

一、什么是 RPM 安装方式

RPM(Red Hat Package Manager) 是 Red Hat 系(RHEL、CentOS、Rocky、Alma、Fedora 等)Linux 使用的软件包管理格式与工具

RPM 包后缀:.rpm

本质:已编译好的二进制软件包

包内包含:

  • 程序文件(可执行文件)
  • 配置文件
  • 依赖关系说明
  • 安装/卸载脚本
  • 版本、作者、校验信息

二、RPM 安装方式适合什么场景

RPM 适用于以下情况:

  1. 服务器离线环境(无外网)
  2. 安装指定版本软件
  3. 安装厂商官方提供的软件包
  4. 排查问题、手动控制依赖
  5. 面试中常考的基础运维能力

在真实工作中,RPM 更多是底层能力,而不是最推荐方式。


三、RPM 与 YUM / DNF 的关系(重点)

1、 RPM 是"工具 + 格式"
  • 直接操作 .rpm 文件
  • 不会自动解决依赖
2、 YUM / DNF 是"高级包管理器"
  • 底层仍然调用 RPM
  • 自动解决依赖
  • 从仓库下载软件

关系一句话总结:YUM / DNF = RPM + 依赖管理 + 仓库


四、RPM 常用命令

1、 安装 RPM 包
复制代码
rpm -ivh 软件包名.rpm

参数说明:

|----|------------|
| 参数 | 含义 |
| -i | install 安装 |
| -v | 显示详细过程 |
| -h | 显示进度条 |

示例:

复制代码
rpm -ivh nginx-1.20.1-1.el7.x86_64.rpm

2、 升级 RPM 包
复制代码
rpm -Uvh 软件包名.rpm

说明:

  • 如果已安装 → 升级
  • 如果未安装 → 安装

3、 卸载 RPM 包
复制代码
rpm -e 软件名

示例:

bash 复制代码
rpm -e nginx

注意:

  • 不是 rpm 文件名
  • 是软件的 包名

4、 查询是否已安装
复制代码
rpm -qa | grep nginx

常见用途:

  • 检查是否安装
  • 排查版本冲突

5、 查看已安装软件的详细信息
复制代码
rpm -qi nginx

可以看到:

  • 版本
  • 安装时间
  • 描述信息

6、 查看某个文件属于哪个 RPM 包(排障常用)
复制代码
rpm -qf /usr/sbin/nginx

用于回答面试题:"系统里一个文件不知道是谁装的,怎么办?"


7、 查看 RPM 包安装了哪些文件
复制代码
rpm -ql nginx

五、RPM 安装的最大问题:依赖地狱

示例问题

复制代码
rpm -ivh nginx.rpm

报错:

复制代码
error: Failed dependencies:
  libpcre.so.1 is needed
  openssl >= 1.1.1 is needed

原因:

  • RPM 不自动安装依赖
  • 你需要手动一个个找 .rpm

这就是所谓的 依赖地狱(Dependency Hell)

Ubuntu

在 Ubuntu 离线环境中,通常通过 dpkg 安装 deb 包完成基础安装,但在生产或批量部署场景下,更推荐构建本地 APT 仓库,通过 apt 进行安装,从而自动解决依赖问题,保证系统一致性和可维护性。

Ubuntu 离线安装的主流方式

|----------------|-------|------|----------|
| 方式 | 常用程度 | 是否推荐 | 典型场景 |
| dpkg 安装 .deb | ⭐⭐⭐⭐ | 推荐 | 少量软件 |
| 本地 APT 仓库 | ⭐⭐⭐⭐⭐ | 强烈推荐 | 服务器 / 批量 |
| apt-offline | ⭐⭐⭐ | 推荐 | 可联网准备 |
| 源码编译 | ⭐⭐ | 不常用 | 定制需求 |
| snap 离线 | ⭐ | 很少 | 桌面环境 |

方式一:dpkg 安装 .deb(最基础)

1、 核心命令
复制代码
dpkg -i 软件包.deb

示例:

复制代码
dpkg -i nginx_1.18.0-6ubuntu14_amd64.deb
2、 dpkg 的特点
  • 直接操作 .deb
  • 不自动解决依赖
  • 离线可用
  • 类似于 CentOS 的 rpm
3、 典型问题
复制代码
dpkg: dependency problems prevent configuration

解决方式:

复制代码
apt --fix-broken install

⚠️ 离线环境下,这一步往往 无法自动修复 ,因此 dpkg 只适合非常简单的安装


四、方式二:本地 APT 仓库(生产环境首选)

这是 Ubuntu 离线安装的标准做法,在企业环境非常常见。


1、 原理说明
  • .deb 包集中到一个目录
  • 用 APT 作为"本地仓库"
  • apt 自动解决依赖
  • 体验和联网安装完全一致

2、 实操流程(核心思路)

1)准备 deb 包(有网机器)

复制代码
apt download nginx
apt download nginx-core
apt download nginx-common

或者:

复制代码
apt-get download $(apt-cache depends nginx | awk '/Depends/ {print $2}')

2)拷贝到离线服务器

复制代码
scp *.deb offline-server:/opt/debs/

(3)在离线服务器创建仓库索引

复制代码
cd /opt/debs
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

(4)添加本地源

编辑:

复制代码
vim /etc/apt/sources.list

添加:

复制代码
deb [trusted=yes] file:/opt/debs ./

(5)更新并安装

复制代码
apt update
apt install nginx

依赖自动解决,和在线无区别


面试总结一句话:Ubuntu 离线环境中,推荐通过构建本地 APT 仓库的方式进行软件安装,既能解决依赖,又便于统一管理和重复部署。

相关推荐
聆风吟º3 小时前
CANN开源项目深度实践:基于amct-toolkit实现自动化模型量化与精度保障策略
运维·开源·自动化·cann
Coder个人博客3 小时前
Linux6.19-ARM64 mm mmu子模块深入分析
大数据·linux·车载系统·系统架构·系统安全·鸿蒙系统
较劲男子汉6 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
Doro再努力6 小时前
Vim 快速上手实操手册:从入门到生产环境实战
linux·编辑器·vim
wypywyp6 小时前
8. ubuntu 虚拟机 linux 服务器 TCP/IP 概念辨析
linux·服务器·ubuntu
rs勿忘初心6 小时前
n8n工作流使用问题集合
常见问题·n8n·工作流平台·json解析方法·json参数报错
风流倜傥唐伯虎6 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
Doro再努力6 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
senijusene6 小时前
Linux软件编程:IO编程,标准IO(1)
linux·运维·服务器
不像程序员的程序媛6 小时前
Nginx日志切分
服务器·前端·nginx