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 仓库的方式进行软件安装,既能解决依赖,又便于统一管理和重复部署。

相关推荐
AOwhisky21 小时前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes
小龙在慢慢变强..1 天前
目录结构(FHS 标准)
linux·运维·服务器
2035去旅行1 天前
嵌入式开发,如何选择C标准库
linux·arm开发
刘延林.1 天前
win11系统下通过 WSL2 安装Ubuntu 24.04 使用RTX 5080 GPU
linux·运维·ubuntu
星恒讯工业路由器1 天前
星恒讯工业生产自动化解决方案
运维·物联网·自动化·智能路由器·信息与通信
a8a3021 天前
Laravel9.x新特性全解析
运维·spring boot·nginx
beyond阿亮1 天前
IEC104 Client Simulator - IEC104 主站/客户端模拟器 仿真器免费使用教程
运维·服务器·网络
(Charon)1 天前
【C++/Qt】Qt 封装 TCP 客户端底层 Network 类:连接、收发、自动测试与错误处理
服务器·网络·qt·tcp/ip
Agent产品评测局1 天前
生产排期与MES/ERP系统打通,实操方法详解:2026企业级智能体与超自动化集成实战指南
运维·人工智能·ai·chatgpt·自动化
CodeOfCC1 天前
Linux 嵌入式arm64安装openclaw
linux·运维·服务器