What is the reason behind the bonded (dependent) hell?

How does a dependency addon happen in Cabal-install?

I read the following in Cabal / Survival - HaskellWiki :

1. What is the difficulty caused by Cabal-install?

The main difficulty with Cabal is otherwise known as the “hellish hell” in which cabal-install cannot install the desired package for a reason or other, which leads to a lot of manual work. As an example of this difficulty, consider the case when the user wants to install packages A and B. Both of them work with package C, but not with the same version of C.

I understand why this makes sense at all, but not with Cabal-install / ghc-pkg, because you can install multiple versions of the same package.
It’s as if each version is a completely different package, since in many respects the version becomes part of the package name (for example, mustaches-0.1.0.0 ) - and maybe this is valid for ghc-pkg (I am not quite familiar with it, but it would make sense).

+7
haskell cabal
source share
3 answers

You have scripts like this:

enter image description here

If 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, export version 1 type T = Int , but in version 2 it exports type T = Bool .

Only when you try to create D will you find a problem related to the fact that B and C were created against different versions of A, and you cannot compare T version 1 with T version 2 .

+11
source share

The problem is that you cannot link your program with these different versions of package C. A and B must find a common version of C in order to use the same implementation of a specific function. One solution to this problem is OSGi, but it requires things like Classloaders, which can be used to load different versions of the C package in the same process without conflict.

+3
source share

One way to addiction to hell occurs when several different projects you are working on intervene. While one project has a solvable set of constraints, there may not be two different projects, and since they share a single package DB, problems will arise. This variant of the infernal hypostasis is solved by enslaving sandboxes.

0
source share

All Articles