客户端更新打断了隧道,旧版本却仍能工作,这就留下两种显而易见的补救办法。一种是把软件包按住不动、等待修复;另一种是立刻转向受支持的方案。两者的安全性并不相同,而且都不是有退出条件的维护策略。选择之前,先比较它们究竟冻结了什么。

一个回归,两种补救

按住软件包会让可用的版本保持安装状态,并阻止 APT 移动它。这争取了时间,让用户保持连接,同时不触碰底层缺陷。向前走意味着找到修复该回归的受支持版本,或者把连接的所有者换成发行版仍在维护的东西。前者前期投入更多工作,却能消除长期风险。

选择取决于三个应当先弄清的事实:是哪个组件出现了回归、是否存在已修复的版本、以及临时状态能容忍多久。

二选一之前,先锁定故障

NetworkManager 核心更新、VPN 插件更新和解析器辅助程序回归,从用户角度看几乎一模一样,但可回滚的候选对象却不同。记下确切的软件包、版本和第一条新错误。

apt-cache policy network-manager network-manager-openvpn
dpkg -l | grep -E 'network-manager|openvpn|wireguard'

如果软件包列表没有刷新,元数据可能已经过时,所以只把它当作线索,并与实际安装的版本核对。不要从论坛帖子里抄目标版本号;不同发行版本中相同的版本字符串可能携带不同的依赖集。

比较暂停覆盖了什么

暂停会阻止软件包被自动安装、升级或删除。但它不会冻结其依赖,不会修复连接,也不会让旧的二进制文件变安全。这个缺口正是全部对比所在。如果回归来自客户端所链接的库,那么库仍在变化时,按住客户端毫无作用。

sudo apt-get -s install network-manager=1.42.4-1
apt-mark showhold

先模拟降级,并完整阅读建议的变更。移除桌面环境所需依赖的降级是另一起事故,而模拟是发现它的最廉价场所。如果暂停确实是正确的临时边界,就把它写成一条决定,包含负责人、理由和解除条件。无人负责的暂停会变成没人敢碰的永久基础设施。

比较退出路径

向前路径来自发行版或厂商的修复,需要先在独立连接上验证再应用。它让系统留在受支持的更新流中,并关闭暴露面。迁移路径则是把客户端或主机替换成发行版仍在维护的东西。它更费功夫,但当回归组件在该发行分支中没有修复版本时,往往也是唯一诚实的答案。

sudo apt-mark unhold network-manager
sudo apt update
sudo apt full-upgrade

无论选择哪条退出路径,在宣布完成之前都要验证确切的配置文件、认证路径、路由、DNS 行为和重连。一次能起来的隧道,和能扛住挂起、换网和重启的隧道不是一回事。为缺陷报告保留失败证据:软件包版本、日志摘录、去掉秘密之后的配置文件结构。绝不要为了让报告更完整而附上私钥或凭据。

记录必须包含什么

用四行写下决定:什么回归了、什么被暂停或改动、谁拥有这个临时状态、以及什么会移除它。再加上你做过的验证,因为下一位工程师会重复它。

有解除日期的暂停是受管理的回滚边界。没有解除日期的暂停,则是一场悄悄成为基础设施一部分的、无人解释的降级。

相关文章