3 ms·
I run into far more version conflicts installing Haskell software through Cabal than any other language environment. Fortunately there is a solution: cabal-dev
by chalst 13y ago
I run into far more version conflicts installing Haskell software through Cabal than any other language environment. Fortunately there is a solution: cabal-dev gives you per-directory package repositories.
From https://plus.google.com/u/0/111990768169655655719/posts/Se5eFQdAWk8 https://plus.google.com/u/0/111990768169655655719/posts/Se5e...
> Cabal is a package manager that by default compiles packages either to a system database (if invoked as root/admin) or a per-user database. Since Haskell code is very often fussy about exact version numbers, and because Cabal offers essentially no way to uninstall packages, this is very painful. Cabal-dev is a front-end to Cabal that gives you per-directory repositories: suddenly conflicts go away, and you can remove packages by deleting the directory's repository and reinstalling everything again. It's a kludge, but it is very helpful.
Cabal-dev: https://github.com/creswick/cabal-dev https://github.com/creswick/cabal-dev
---Postscript
Or in stronger terms: http://comments.gmane.org/gmane.comp.lang.haskell.libraries/16922 http://comments.gmane.org/gmane.comp.lang.haskell.libraries/...
> I would say, "You should never mutate your user or global package database" and recommend using cabal-dev. The way cabal-install does destructive updates is evil. In particular, it likes to mutate your global or user package database. You run the risk of building something and then breaking it later by mutating its dependencies.
- mercurial 13y agoAlternatively, hsenv is very good too (it's closer to Python's virtualenv)