最稳妥的降级方式是用包管理器安装旧版本,需确认版本号且该版本仍在源中;debian/ubuntu用apt-cache policy查版本、apt install指定版本并apt-mark hold锁定;rhel/centos/fedora用dnf history undo回滚或dnf downgrade单包降级;opensuse和ubuntu桌面可用snapper或timeshift快照还原;snap应用则用snap revert回退。

直接用包管理器安装旧版本是最稳妥的降级方式,前提是你知道目标版本号,且该版本仍在软件源中。操作本身不复杂,但细节容易出错,比如依赖未处理、升级后自动覆盖、关键组件漏重建等。
查版本再安装:Debian/Ubuntu 系统
先确认当前装的是哪个版本,再看源里有哪些可用旧版:
- 运行 apt-cache policy nginx(把 nginx 换成你要降级的包名),输出里带“Version table”的部分会列出所有可安装版本,找比当前 Installed 版本更老的那个
- 复制完整版本字符串(例如 1.18.0-6ubuntu14.4),执行 sudo apt install nginx=1.18.0-6ubuntu14.4
- 为防止下次
apt upgrade又把它升回去,加锁:sudo apt-mark hold nginx
事务回滚或单包降级:RHEL/CentOS/Fedora 系统
dnf 支持两种主流方式,按需选择:
- 如果刚升级完想整体撤销,运行 dnf history list 找到对应事务 ID(比如 42),再执行 sudo dnf history undo 42
- 只想降一个包(比如 httpd),用 sudo dnf downgrade httpd-2.4.37-43.module+el8.5.0+1234+abcd1234,版本号从 dnf list --showduplicates httpd 中获取
- 注意:若提示“no package matched”,说明仓库已移除该旧版,需临时启用 vault 或 EPEL 历史源
快照还原:openSUSE 和 Ubuntu 桌面环境
这不是包级操作,而是整系统状态回退,适合升级后大面积异常:
- openSUSE 默认启用 snapper + Btrfs,运行 snapper list 查看快照编号,确认目标后执行 sudo snapper rollback 78(78 是编号),重启即生效
- Ubuntu 推荐 Timeshift,需提前开启 RSYNC 模式并勾选“每次更新前自动创建”。出问题时从 Live USB 启动,挂载原系统,图形界面点选快照恢复
- 重要提醒:快照必须升级前就存在,否则本次无法使用
Snap 应用快速 revert
专用于 snap 安装的软件(如 VS Code、Spotify),机制独立于系统包管理:
- 运行 snap info code(code 是应用名),查看 “revisions” 区域,找标记为 disabled 的旧版本号
- 回退至上一版:sudo snap revert code
- 回退至指定版:sudo snap revert code --revision=132(132 来自上一步输出)
- 注意:旧 revision 可能被系统自动清理,发现问题应尽快操作











