
On 02/06/2014 12:59 AM, tam@hiddenrock.com wrote:
The most robust approach is to find or create distro packages for everything you need.
How does this handle the situation where I want both package A and package B installed, but they each want a different version of package C?
How would your distro handle it if those packages were written in C? This isn't too much of a problem in practice. With Haskell it seems worse because everything has conservative dependencies in a *.cabal file and Cabal will refuse to build the thing unless they're met. When we find a package that's too conservative, we mangle the dependencies on the fly and report it upstream. If there's a more serious conflict, sometimes both versions can be installed side-by-side, but in general we have to file a bug and wait just like if it was written in e.g. python. But I see that as a good thing: I've got some 300 haskell packages installed at the moment, and I know that they're all in a consistent state (and up to date). It's pretty nice when people complain about Cabal and you have no idea what they're talking about. I also do development on three different machines, and it's handy to have them running the same packages.