主要观点:APT 2.9.3 引入新求解器 solver3,有 -solver 3.0 选项,与旧求解器工作方式不同。
关键信息:
- 工作方式:是完全回溯的依赖求解算法,延迟选择到最后,通过多种方式实现,如递归标记依赖、将有多种选择的依赖放入优先级队列等,还会记录包级别决策等。
- 与 SAT 求解器设计比较:本质是无纯文字消除的 DPLL 求解器,构建部分蕴含图,可实现更先进的冲突驱动子句学习方法以加速回溯。
- 行为变化:总是保留手动安装的包,未来可替换;自动删除行为改变,仅保留强依赖链的包;新增 --no-strict-pinning 选项等。
- 新功能:能实现
apt why
命令,记录最强依赖链;存在待做事项,如存储回溯错误信息、优化测试套件、实现替换逻辑等。
重要细节: - 手动安装包冲突会导致其反向依赖被标记为拒绝;可选依赖在回溯中不“嵌套”;先提取包的公共依赖再决定安装版本等。
- 测试套件中多数包为手动安装,求解器不删除,导致测试套件未通过。
- 未来计划逐步推出并收集反馈,如在 Ubuntu 上自动反馈回归问题,在 Debian 上发送求解器转储等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。