# 系统升级与停止维护版本的迁移

升级前先确认官方支持的路径。跨多个大版本、混合软件源或继续使用归档仓库，都可能留下不可维护的系统。

更新日期：2026-09-16

规范地址：https://stock.iftalking.com/guides/os-upgrade/

## 1. 区分日常更新和发行版升级

安装当前发行版的安全补丁属于日常更新；Ubuntu 24.04 升到后续 LTS、Debian 12 升到 13 属于发行版升级，会改变大量依赖和默认行为。后者需要维护窗口、备份和兼容性测试，不能等同于一次 `apt upgrade`。

先记录当前环境：

```bash
cat /etc/os-release
uname -r
df -h
systemctl --failed
```

列出网站、PHP、数据库、Docker 和第三方软件源，查询每个应用是否支持目标系统。长期停更的旧系统通常更适合新建受支持实例迁移数据，避免跨越多个版本直接升级。

## 2. 先验证备份和控制台入口

保存应用文件、数据库、配置与计划任务，并下载到另一处。快照可辅助回退，但要确认套餐是否支持、是否包含所有磁盘，以及恢复会覆盖哪些当前数据。

![升级前确认网页控制台可以进入实例](https://stock.iftalking.com/tutorial-media/provider-shell-launch.jpg)

*图示说明：服务商官方知识库公开截图（旧版界面），用于对照功能名称；当前菜单位置可能调整。图中的套餐、IP、端口和日期仅为示例。*

用 tmux 或服务商控制台执行长操作，避免 SSH 断开中止升级。保留足够磁盘空间，尤其是 `/boot`，并先修复已存在的软件包错误和失败服务。

## 3. Ubuntu 按官方支持的升级路径操作

先完成当前版本的更新，阅读待变更包列表；需要重启时在维护窗口先重启到正常状态。再使用发行版提供的升级工具检查可用路径。

```bash
sudo apt update
sudo apt upgrade
sudo do-release-upgrade -c
```

确认官方支持从当前版本升级到目标版本后，再运行 `sudo do-release-upgrade`。不要用开发版选项强行绕过尚未开放的升级路径，也不要直接替换所有软件源代号来模拟升级。

遇到配置文件冲突提示，先看差异：服务商网络配置、SSH 端口和自己的反向代理规则不能盲目覆盖。升级器提示临时 SSH 端口时，按当次说明处理防火墙，并保留控制台入口。

## 4. Debian 逐版阅读发行说明

Debian 的稳定版升级以目标版本 Release Notes 为准。先更新当前版本、检查第三方源和 held packages，再按说明调整 Debian 官方源并分阶段升级。不要把其他发行版的 Ubuntu 源混入 Debian。

```bash
apt-mark showhold
dpkg --audit
```

第三方源应逐个确认目标版本支持情况。数据库大版本升级可能有独立迁移要求；系统软件包升级成功，不代表数据库数据格式和插件一定兼容。

## 5. 重启后按业务验收，而不只看版本号

```bash
cat /etc/os-release
uname -r
systemctl --failed
sudo journalctl -p err -b --no-pager
```

再测试新的 SSH 连接、DNS、IPv4/IPv6、网站首页、登录、上传、数据库读写和计划任务。保留旧备份直到关键功能验证完毕；不要刚重启成功就删除唯一回退点。

如果升级失败，先从控制台查看错误。能恢复应用配置就针对修复；需要回退快照时，先保存升级后新增的数据。磁盘空间问题看[清理磁盘](https://stock.iftalking.com/guides/disk-cleanup/)，包管理问题看[APT/DNF 排错](https://stock.iftalking.com/guides/packages/)。


## 完成后检查

如果无法证明原地升级可以回退，选择新机迁移通常更容易控制故障范围。

## 参考资料

- [Ubuntu 官方文档](https://ubuntu.com/server/docs/how-to/software/upgrade-your-release/)
- [Debian 发行说明](https://www.debian.org/releases/stable/releasenotes)
- [服务商官方说明](https://bandwagonhost.com/kb.php?action=displayarticle&id=30)
