装指定版本与本地包
实际运维中很少只是 dnf install 最新版:更常见的是锁定某个已验证版本、把新版本降回旧版本,或者在一台没有外网的机器上装一个本地 rpm 文件。这三件事对应三条路径——在包名后接版本号锁定版本、用 downgrade 回退、用 install 直接指向 rpm 文件路径让 dnf 从源里补齐依赖。信创环境的软件版本适配往往很挑剔,掌握这三招能省下大量沟通成本。
基本信息
| 锁定版本 | dnf install 包名-版本号,可配合通配符 |
|---|---|
| 装本地包 | dnf install ./包文件.rpm,从源补依赖 |
| 降级 | dnf downgrade 包名,回退到源里的较低版本 |
| 重装 | dnf reinstall 包名,恢复被改动的包文件 |
| 适用平台 | openEuler / Kylin V10 服务器版 / UOS 服务器版 |
| 权限 | 需 root 或 sudo |
典型使用场景
- 按适配清单装指定版本:厂商要求某中间件必须用特定版本,装新版本会不受支持
- 升级后发现异常需要回退:用降级把版本拉回上一个已验证版本
- 内网离线机器装包:把 rpm 文件拷进去,用 dnf 安装以自动补齐依赖
- 修复被误改的包文件:配置文件之外的二进制被覆盖后,用重装恢复
- 核对可装版本:先用 list available 看清源里有哪些版本再决定
- 批量收敛版本:多台机器统一到同一版本,减少环境差异
实操示例
实操示例
dnf list available nginx | head # 先看源里有哪些版本
dnf install -y nginx-1.20.1* # 用通配符锁定版本前缀
dnf install -y ./local-package.rpm # 装本地 rpm,自动补依赖
dnf downgrade -y openssl # 回退到源中较低版本
dnf reinstall -y nginx # 重装,恢复被改动的文件
dnf history list | head # 查看历史事务,便于回退整批变更
dnf history undo 3 # 回退指定事务号安装方式对照
| 方式 | 写法 | 适用与限制 |
|---|---|---|
| 装最新版 | dnf install 包名 | 最常用,版本由源决定 |
| 锁定版本 | dnf install 包名-版本 | 源中必须存在该版本 |
| 装本地文件 | dnf install ./包.rpm | 需能访问源以解析依赖 |
| 降级 | dnf downgrade 包名 | 只在源中存在旧版本时可用 |
| 重装 | dnf reinstall 包名 | 恢复包内文件,不动用户数据 |
| 离线安装 | 先下载再拷入安装 | 取决于发行版与工具集 |
用 dnf 装本地 rpm 比 rpm -ivh 稳妥:dnf 会从已配置的源里解析并补齐依赖,而 rpm 只负责解包,缺依赖时直接中止并留下未完成状态。没有可用源时,需要把依赖包一并准备好。
降级前先确认服务的配置格式与数据结构是否已随新版本升级过:程序回退了,配置文件与数据库结构未必跟着回退,可能直接起不来。降级前后各留一份配置备份,并把变更记进工单。