[Haskell-cafe] Correspondence between libraries and modules

Chris Wong chrisyco+haskell-cafe at gmail.com
Sat May 26 03:04:56 CEST 2012


Rustom:

> O well... If the noob trap is one error playing it safe is probably another
> so here goes with me saying things that I (probably) know nothing about:
> 1. cabal was a beautiful system 10 years ago.  Now its being forcibly scaled
> up 2 (3?) orders of magnitude and is creaking at the seams

The problem is, Cabal is not a package management system. The name
gives it away: it is the Common Architecture for *Building*
Applications and Libraries. Cabal is to Haskell how GNU autotools +
make is to C: a thin wrapper that checks for dependencies and invokes
the compiler. All that boring
not-making-your-package-break-everything-else stuff belongs to the
distribution maintainer, not Hackage and Cabal.

> 2. There's too much conflicting suggestions out there on the web for a noob
>     - use system install (eg apt-get) or use cabal

Use apt-get. Your distribution packages are usually new enough, have
been tested thoroughly, and most importantly, do not conflict with
each other.

>     - cabal in user area or system area etc

Installing with --user is usually the best, since they won't clobber
system packages and if^H^Hwhen they do go wrong, you can simply rm -r
~/.ghc. For actual coding, it's better to use a sandboxing tool such
as [cabal-dev][] instead.

[cabal-dev]: http://hackage.haskell.org/package/cabal-dev

>     - the problem is exponentiated by the absence of cabal uninstall

See above.

By the way, someone else a whole article about it:
https://ivanmiljenovic.wordpress.com/2010/03/15/repeat-after-me-cabal-is-not-a-package-manager/

Hope that clears it up for you.

Chris



More information about the Haskell-Cafe mailing list