What's the reason behind cabal (dependency) hell?

前端 未结 3 1387
心在旅途
心在旅途 2020-12-19 05:19

How does dependency hell happen in Cabal-install?

I read the following at Cabal/Survival - HaskellWiki:

1. What is the difficulty caused by C

相关标签:
3条回答
  • 2020-12-19 05:39

    One way dependency hell happens is when several different projects you are working on interfere. While a single project has a solvable constraint set, two different project might not and since they're sharing a single package DB, there will be trouble. This variant of dependency hell is solved by cabal sandboxes.

    0 讨论(0)
  • 2020-12-19 05:41

    The problem is that you cannot link your program against those different versions of package C. A and B have to find a common version of C to use the same implementation of a certain function. One solution to this problem is OSGi but requires stuff like Classloaders which can be used to load different versions of package C in the same process w/o conflicts.

    0 讨论(0)
  • 2020-12-19 05:52

    You have scenarios like this:

    enter image description here

    Where both B and C depend on A. However, if they were installed at different times, they may depend on different versions of A. For example, A version 1 export type T = Int, but in version 2 it exports type T = Bool.

    Only when you try to build D do you expose the problem that B and C were build against different versions of A, and you can't compare T version 1 against T version 2.

    0 讨论(0)
提交回复
热议问题