|--------|-----------|-----------|
| 对比项 | 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 适用于以下情况:
- 服务器离线环境(无外网)
- 安装指定版本软件
- 安装厂商官方提供的软件包
- 排查问题、手动控制依赖
- 面试中常考的基础运维能力
在真实工作中,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 仓库的方式进行软件安装,既能解决依赖,又便于统一管理和重复部署。