Difference between revisions of "Cabal-Install"

From HaskellWiki
Jump to: navigation, search
m (add link to Hack-Nix)
Line 66: Line 66:
* [http://hackage.haskell.org/trac/hackage/wiki/CabalInstall cabal-install] page on the Cabal/Hackage development site.
* [http://hackage.haskell.org/trac/hackage/wiki/CabalInstall cabal-install] page on the Cabal/Hackage development site.
* [[Hack-Nix]] alternative based on the [http://nixos.org Nix] package manager.

Revision as of 04:23, 9 December 2009

The cabal-install package provides the cabal command-line tool which simplifies the process of managing Haskell software by automating the fetching, configuration, compilation and installation of Haskell libraries and programs. Those packages must be prepared using Cabal and should be present at Hackage.


Once you have the tool installed, installing other packages is easy. To install Cabal packages from Hackage use:

 cabal install foo

Other common variations:

 cabal install                     Package in the current directory
 cabal install foo                 Package from the hackage server
 cabal install foo-1.0             Specific version of a package
 cabal install 'foo < 2'           Constrained package version
 cabal install foo bar baz         Several packages at once
 cabal install foo --dry-run       Show what would be installed

Occasionally you need to update the list of available packages:

 cabal update

You can edit the cabal configuration file to set defaults:

 ~/.cabal/config (for *nix based systems)

For Windows there are different locations for different versions of Windows (just to make things easy). To get the directory cabal actually uses, paste this in ghci and press Enter:

import System.Directory
getAppUserDataDirectory "cabal"



Get a pre-built cabal.exe from:


You must put the cabal.exe in a directory that is on your %PATH%, for example C:\Program Files\Haskell\bin.


Download the latest cabal-install tarball from:


It includes a shell script bootstrap.sh that you can run to download and install the other dependencies.

Note this assumes you have the zlib C library and its header files installed. Those header files are usually in a native system package like zlib-devel (On debian-based systems it is zlib1g-dev). You should also have the Haskell packages parsec and network installed. If you installed GHC via your native system package manager then you may also need to use it to install these two packages. (On debian-based systems they are called libghc6-parsec-dev and libghc6-network-dev.)

 tar -zxf cabal-install-0.6.2.tar.gz 
 cd cabal-install-0.6.2

If this completes successfully you will have the cabal binary in ~/.cabal/bin. You should either add this directory to your $PATH or copy the cabal program to some location that is on your $PATH, eg ~/bin.

to get the current list of package from hackage you should now run:

 cabal update

By default the cabal tool will install programs in ~/.cabal/bin. If you decided not to put this directory on your $PATH then you can get cabal to symlink binaries into another directory, eg ~/bin. To use this feature edit ~/.cabal/config and see the symlink-bindir field. Note that the ~/.cabal/config file is not created until you run a cabal command for the first time, eg cabal update.

Linux on Intel

There are also unofficial binaries for Intel-Linux.

See also