See also http://en.wikipedia.org/wiki/ZYpp
On Wed, Apr 15, 2015 at 7:43 AM, Justin Cappos <jcap...@nyu.edu> wrote: > First of all, I'm surprised that pip doesn't warn or error in this case. I > think this is certainly a bug that should be fixed. The problem can come up > in much more subtle cases too that are very hard for the user to understand. > > The good news is that this is a known problem that happens when doing > dependency resolution and has a solution. The solution, which is referred > to as backtracking dependency resolution, basically boils down to saving the > state of the dependency resolver whenever you have multiple choices to > resolve a dependency. Then if you reach a later point where there is a > conflict, you can backtrack to the point where you made a choice and see if > another option would resolve the conflict. > > I have some of the gory details, in Chapter 3.8.5 of my dissertation ( > http://isis.poly.edu/~jcappos/papers/cappos_stork_dissertation_08.pdf ). > There is also working Python code out there that shows how this should > behave. (I implemented this as part of Stork, a package manager that was > used for years in a large academic testbed. ) > > Thanks, > Justin > > > > > > On Wed, Apr 15, 2015 at 7:09 AM, Robin Becker <ro...@reportlab.com> wrote: >> >> After again finding that pip doesn't have a correct dependency resolution >> solution a colleage and I discussed the nature of the problem. We examined >> the script capture of our install and it seems as though when presented with >> >> >> level 0 A >> A level 1 1.4<= C >> >> >> level 0 B >> B level 1 1.6<= C <1.7 >> >> pip manages to download version 1.8 of C(Django) using A's requirement, >> but never even warns us that the B requirement of C was violated. Surely >> even in the absence of a resolution pip could raise a warning at the end. >> >> Anyhow after some discussion I realize I don't even know the name of the >> problem that pip should try to solve, is there some tree / graph problem >> that corresponds? Searching on dependency seems to lead to topological sorts >> of one kind or another, but here we seem to have nodes with discrete values >> attached so in the above example we might have (assuming only singleton A & >> B) >> >> R --> A >> R --> B >> >> A --> C-1.4 >> A --> C-1.6 >> A --> C-1.6.11 >> A --> C-1.7 >> A --> C-1.8 >> >> B --> C-1.6 >> B --> C-1.6.11 >> >> so looking at C equivalent nodes seems to allow a solution set. Are there >> any real problem descriptions / solutions to this kind of problem? >> -- >> Robin Becker >> _______________________________________________ >> Distutils-SIG maillist - Distutils-SIG@python.org >> https://mail.python.org/mailman/listinfo/distutils-sig > > > > _______________________________________________ > Distutils-SIG maillist - Distutils-SIG@python.org > https://mail.python.org/mailman/listinfo/distutils-sig > _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig