新的 APT 3.0 求解器

主要观点:APT 2.9.3 引入新求解器 solver3,有 -solver 3.0 选项,与旧求解器工作方式不同。
关键信息

  • 工作方式:是完全回溯的依赖求解算法,延迟选择到最后,通过多种方式实现,如递归标记依赖、将有多种选择的依赖放入优先级队列等,还会记录包级别决策等。
  • 与 SAT 求解器设计比较:本质是无纯文字消除的 DPLL 求解器,构建部分蕴含图,可实现更先进的冲突驱动子句学习方法以加速回溯。
  • 行为变化:总是保留手动安装的包,未来可替换;自动删除行为改变,仅保留强依赖链的包;新增 --no-strict-pinning 选项等。
  • 新功能:能实现 apt why 命令,记录最强依赖链;存在待做事项,如存储回溯错误信息、优化测试套件、实现替换逻辑等。
    重要细节
  • 手动安装包冲突会导致其反向依赖被标记为拒绝;可选依赖在回溯中不“嵌套”;先提取包的公共依赖再决定安装版本等。
  • 测试套件中多数包为手动安装,求解器不删除,导致测试套件未通过。
  • 未来计划逐步推出并收集反馈,如在 Ubuntu 上自动反馈回归问题,在 Debian 上发送求解器转储等。
阅读 15
0 条评论