论文标题
依赖解决仍然很难,但是我们正在越来越好
Dependency Solving Is Still Hard, but We Are Getting Better at It
论文作者
论文摘要
由于相同包装的互不兼容版本或明确声明的软件包冲突,因此在所有非平凡组件模型中,依赖关系解决是一个困难的(NP完整)问题。因此,软件升级计划需要依靠高度专业化的依赖求解器,以免陷入诸如不完整的陷阱中 - 包装版本的组合确实存在满足依赖性约束的包装版本,但是软件包管理器无法找到它。在本文中,我们回顾了依赖性解决研究的建议,可以追溯到几年。具体而言,我们回顾了将依赖解决方案视为包装管理器实施中的单独关注的想法,它依靠基于经过尝试和测试的技术(例如SAT解决,PBO,MILP等)等通用依赖性解决方案,通过进行依赖性解决能力的人口普查,而在先进的包装管理人员中进行了依赖的依赖性,我们得出一些建议,我们得出一些依赖性(E.G. E.G。 (例如,外部依赖依赖性解决可重复使用的组件)。我们反映了为什么是这种情况,并研究了此后出现的依赖解决方案的新挑战。
Dependency solving is a hard (NP-complete) problem in all non-trivial component models due to either mutually incompatible versions of the same packages or explicitly declared package conflicts. As such, software upgrade planning needs to rely on highly specialized dependency solvers, lest falling into pitfalls such as incompleteness-a combination of package versions that satisfy dependency constraints does exist, but the package manager is unable to find it. In this paper we look back at proposals from dependency solving research dating back a few years. Specifically, we review the idea of treating dependency solving as a separate concern in package manager implementations, relying on generic dependency solvers based on tried and tested techniques such as SAT solving, PBO, MILP, etc. By conducting a census of dependency solving capabilities in state-of-the-art package managers we conclude that some proposals are starting to take off (e.g., SAT-based dependency solving) while-with few exceptions-others have not (e.g., out-sourcing dependency solving to reusable components). We reflect on why that has been the case and look at novel challenges for dependency solving that have emerged since.