10 月 28 日同一天发了两个包管理器更新:APT 3.3.5 声称依赖解析速度最多提升 20%,Yay 13.1 也优化了依赖解析、搜索准确度、仓库处理和 Lua 脚本能力。
依赖解析为什么会慢
这不是简单的字符串匹配。求解器要在「满足全部约束」的解空间里找一个可行解,冲突越多、可选版本越多,搜索树越大。生产中体感最差的是那种装一个包要拉进几十个依赖、还带版本冲突的场景,解析阶段能占到总耗时的一半以上。20% 的提升听着不多,但在 CI 里每次构建都跑一遍 apt-get,累计起来是实打实的。
升级后建议验证的顺序
一,先跑一次 dry-run。APT 有 --simulate,把要动的包列出来,确认没有计划外的降级或移除。二,检查 hold 状态的包有没有被解析器换掉。三,如果你维护私有仓库,验一下优先级配置(pin)是否仍然被正确尊重——解析器优化最容易在这类边界条件上出偏差。四,Yay 那边,确认 AUR 包的搜索排序没变,以及依赖解析变更后 AUR 包与官方仓库包的版本共存是否正常。
顺手值得注意的两点
Yay 13.1 的 Lua 脚本能力是这次比较实质的功能扩展,之前很多定制逻辑要写 shell 包装,现在可以直接在配置里表达。APT 3.3.5 的改动主要在解析器内部,对命令行行为影响很小,所以如果你的自动化脚本依赖 apt 的输出文本,反而需要重新对一遍格式。
一句经验
包管理器这类基础组件的更新,风险从来不在功能,而在边界条件。升级窗口选在有回滚手段的时候,别在发布前一小时动。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。