事务历史是什么
dnf 把每一次安装、升级、卸载记录成一条带编号的事务,包含时间、操作者与涉及的全部包。误操作后不用手工找旧版本,直接按事务回滚即可:undo 撤销指定的一次事务,rollback 撤销到某个事务之后的状态。这是 RPM 系发行版上成本最低的抢救手段。
基本信息
| 列出事务 | dnf history list |
|---|---|
| 查看明细 | dnf history info <事务号> |
| 撤销单次 | dnf history undo <事务号> |
| 撤销到某点 | dnf history rollback <事务号> |
| 权限要求 | root 或 sudo |
典型使用场景
- 误装或误卸软件包后快速恢复
- 升级后服务异常,回退到升级前的包版本
- 排查变更时间线:确认谁在什么时候动了哪些包
- 批量变更前记录事务号,出问题时精准回退
- 验证升级方案:先在测试机装一遍再回滚确认可行性
查看与回滚
查看与回滚
dnf history list | head -20 # 列出最近的事务与编号
dnf history info 25 # 查看第 25 次事务的明细
dnf history userinstalled | head # 查看用户显式安装的包
dnf history undo 25 -y # 撤销第 25 次事务
dnf history rollback 20 -y # 回退到第 20 次事务之后的状态
dnf history list | head -3 # 回滚本身也会产生新事务,便于核对回滚前后的核对
回滚前后的核对
rpm -q nginx # 记录当前版本
dnf history info 25 | grep -E 'Install|Upgrade|Erase' # 看事务动作类型
dnf history undo 25 -y # 执行撤销
rpm -q nginx # 复核版本是否回到预期
dnf check # 检查依赖完整性两条命令的区别
| 命令 | 作用范围 | 适用场景 |
|---|---|---|
| undo <编号> | 只撤销指定那一次事务 | 单次误装误卸 |
| rollback <编号> | 撤销该编号之后的所有事务 | 连续多次变更后整体回退 |
| history info | 只读查看明细 | 确认事务内容再决定 |
| history list | 列出事务索引 | 定位要处理的事务号 |
回滚只处理包状态,不会恢复被新版本改写的配置文件;业务配置要另行备份还原,回滚后还需核对服务配置与数据格式是否兼容。
回滚注意事项
- 先看事务明细确认涉及哪些包再执行
- 记录回滚本身产生的新事务号便于二次核对
- 回滚后重启相关服务,让新版本真正生效
- 配置文件单独备份与还原,不依赖回滚