更新系统与软件包
如何安全地更新 Debian、Ubuntu 和 AlmaLinux:upgrade 与 full-upgrade 有何不同、什么时候需要重启,以及更新破坏了服务该怎么办。
更新于 2026年8月23日
全新的系统会修复漏洞和错误,但更新本身也是一种变更,而变更往往会破坏原本正常工作的东西。合理的做法是:定期更新,小步推进,而不是一年一次性地全部更新。
Debian 和 Ubuntu
apt update
apt list --upgradable
apt upgrade
apt upgrade 会安装新版本,但不会移除任何东西。如果输出中显示“deferred updates”,您需要使用 apt full-upgrade——它允许移除软件包以满足依赖关系。确认之前请先阅读将被移除的软件包列表。
更新后的清理:
apt autoremove --purge
apt clean
如果某个软件包的配置发生了变化,apt 会询问保留哪个版本。安全的答案是保留您的版本(N),然后将其与 .dpkg-dist 文件中的新版本进行比较。
AlmaLinux 和 CentOS Stream
dnf check-update
dnf upgrade
dnf autoremove
dnf 会将新配置以 .rpmnew 的形式放在旁边,并将旧配置保存为 .rpmsave。要找到它们:
find /etc -name "*.rpmnew" -o -name "*.rpmsave"
重启与服务
对内核、glibc、systemd 或 openssl 的更新,在进程重启之前不会生效。
test -f /var/run/reboot-required && echo "reboot required"
needs-restarting -r
systemctl list-units --state=failed
当您能在控制面板中打开控制台时再重启:如果系统在新内核下无法启动,您可以通过救援磁盘来修复。
更换发行版
从 Debian 12 升级到 13,或从 Ubuntu 24.04 升级到 26.04,并不是一次常规更新,而是数小时的工作和实实在在的风险。如果机器上没有难以迁移的数据,更干净的做法是在面板 /hosting/vds/m/<id> 的“访问”选项卡中选择重装为所需的系统:配置过程大约需要一分钟。
在更换发行版之前,请先将数据从机器上复制出来。我们没有机器的自动备份,因此将无处可以回滚。
常见错误
| 错误 | 会发生什么 | 解决方法 |
|---|---|---|
Could not get lock /var/lib/dpkg/lock | apt 或自动更新正在并行运行 | 等待,然后执行 systemctl status unattended-upgrades |
| 更新随 SSH 一起中断 | 软件包处于半安装状态 | dpkg --configure -a,并且今后在 tmux 中运行 |
| 磁盘空间不足 | /boot 中塞满了旧内核 | apt autoremove --purge,移除多余的内核 |
| 服务未启动 | 配置格式发生了变化 | journalctl -u <service> -n 50 并进行修复 |
请在
tmux或screen中运行耗时较长的更新。在apt full-upgrade过程中 SSH 断开连接会使系统处于半完成状态,而这已经是修复,而不是更新了。
您可以把例行部分交给我们——请参阅自动安全更新。