当前位置:
X-MOL 学术
›
arXiv.cs.SE
›
论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Dependency Solving Is Still Hard, but We Are Getting Better at It
arXiv - CS - Software Engineering Pub Date : 2020-11-16 , DOI: arxiv-2011.07851 Pietro Abate, Roberto Di Cosmo (UP, Inria, DGD-I), Georgios Gousios (TU Delft), Stefano Zacchiroli (UP, Inria, DGD-I)
arXiv - CS - Software Engineering Pub Date : 2020-11-16 , DOI: arxiv-2011.07851 Pietro Abate, Roberto Di Cosmo (UP, Inria, DGD-I), Georgios Gousios (TU Delft), Stefano Zacchiroli (UP, Inria, DGD-I)
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.
中文翻译:
依赖解决仍然很难,但我们正在变得更好
由于相同包的相互不兼容版本或显式声明的包冲突,依赖解决是所有非平凡组件模型中的一个困难(NP 完全)问题。因此,软件升级规划需要依赖高度专业化的依赖求解器,以免陷入不完整等陷阱——满足依赖约束的包版本组合确实存在,但包管理器无法找到它。在本文中,我们回顾了几年前的依赖解决研究的建议。具体来说,我们回顾了将依赖解决作为包管理器实现中的一个单独关注点的想法,依赖于基于久经考验的技术(如 SAT 解决、PBO、MILP 等)的通用依赖解决方案。通过对最先进的包管理器中的依赖解决能力进行普查,我们得出结论,一些提议开始起飞(例如,基于 SAT 的依赖解决),而除了少数例外 - 其他人还没有(例如,退出-source 对可重用组件的依赖解决)。我们反思为什么会出现这种情况,并研究此后出现的依赖解决的新挑战。
更新日期:2020-11-17
中文翻译:
依赖解决仍然很难,但我们正在变得更好
由于相同包的相互不兼容版本或显式声明的包冲突,依赖解决是所有非平凡组件模型中的一个困难(NP 完全)问题。因此,软件升级规划需要依赖高度专业化的依赖求解器,以免陷入不完整等陷阱——满足依赖约束的包版本组合确实存在,但包管理器无法找到它。在本文中,我们回顾了几年前的依赖解决研究的建议。具体来说,我们回顾了将依赖解决作为包管理器实现中的一个单独关注点的想法,依赖于基于久经考验的技术(如 SAT 解决、PBO、MILP 等)的通用依赖解决方案。通过对最先进的包管理器中的依赖解决能力进行普查,我们得出结论,一些提议开始起飞(例如,基于 SAT 的依赖解决),而除了少数例外 - 其他人还没有(例如,退出-source 对可重用组件的依赖解决)。我们反思为什么会出现这种情况,并研究此后出现的依赖解决的新挑战。