The cabal-install package

[Tags: bsd3, program]

The 'cabal' command-line program simplifies the process of managing Haskell software by automating the fetching, configuration, compilation and installation of Haskell libraries and programs.

[Skip to ReadMe]


Versions0.4.0, 0.5.0, 0.5.1, 0.5.2, 0.6.0, 0.6.2, 0.6.4, 0.8.0, 0.8.2, 0.10.0, 0.10.2, 0.14.0, 0.14.1, 1.16.0,,,, 1.18.0,,,,,,,,,,,,,,,,,,,,,,,,
Change logNone available
Dependenciesarray (>=0.1 && <0.3), base (<2.2 || >=3.0 && <4), bytestring (>=0.9), Cabal (==1.6.*), containers (>=0.1 && <0.3), directory (>=1 && <1.1), filepath (>=1.0), HTTP (>=3000 && <3002), network (>=1 && <3), old-time (>=1 && <1.1), pretty (>=1 && <1.1), process (>=1 && <1.1), random (>=1 && <1.1), unix (>=2.0 && <2.4), Win32 (==2.*), zlib (>=0.4 && <0.6) [details]
Copyright2005 Lemmih <> 2006 Paolo Martini <> 2007 Bjorn Bringert <> 2007 Isaac Potoczny-Jones <> 2008 Duncan Coutts <>
AuthorLemmih <> Paolo Martini <> Bjorn Bringert <> Isaac Potoczny-Jones <> Duncan Coutts <>
UploadedSat Oct 11 19:57:02 UTC 2008 by DuncanCoutts
DistributionsDebian:, Fedora:, FreeBSD:, LTSHaskell:, NixOS:, Stackage:
Downloads147385 total (1040 in last 30 days)
2 []
StatusDocs not available [build log]
All reported builds failed as of 2015-10-06 [all 2 reports]


old-baseOld, monolithic baseDisabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainers' corner

For package maintainers and hackage trustees

Readme for cabal-install-0.6.0

The cabal-install package

[Cabal home page](

The `cabal-install` package provides a command line tool called `cabal`. The
tool uses the `Cabal` library and provides a convenient user interface to the
Cabal/Hackage package build and distribution system. It can build and install
both local and remote packages, including dependencies.

Installation instructions for the cabal-install command line tool

The `cabal-install` package requires a number of other packages, most of which
come with a standard ghc installation. It requires the `network` package, which
is sometimes packaged separately by Linux distributions, for example on
debian or ubuntu it is in "libghc6-network-dev".

It requires three other Haskell packages that are not always installed:

 * Cabal  (1.4 or later)
 * zlib

All of these are available from [Hackage](

In future, cabal-install will be part of the Haskell Platform so will not need
to be installed separately. In the mean time however you have to install it
manually. Since it is just an ordinary Cabal package it can be built in the
standard way, but to make it a bit easier we have partly automated the process:

Quickstart on Unix systems

As a convenience for users on Unix systems there is a script which
will download and install each of the dependencies in turn.

    $ ./

It will download and install the above three dependencies. The script will
install the library packages into `$HOME/.cabal/` and the `cabal` program will
be installed into `$HOME/.cabal/bin/`.

You then have two choices:

 * put `$HOME/.cabal/bin` on your `$PATH`
 * move the `cabal` program elsewhere and edit the `$HOME/.cabal/config` file
   and set the `symlink-bindir` entry to point to an alternative location where
   that is on your `$PATH`, eg a `$HOME/bin` directory.

Quickstart on Windows systems

For Windows users we hope to provide a pre-compiled `cabal.exe` program shortly.
In the mean time you have to build the three dependencies in [the standard way].

[the standard way]:

Using cabal-install

There are two sets of commands: commands for working with a local project build
tree and ones for working with distributed released packages from hackage.

For a list of the full set of commands and the flags for each command see

    $ cabal --help

Commands for developers for local build trees

The commands for local project build trees are almost exactly the same as the
`runghc Setup` command line interface that many people are already familiar
with. In particular there are the commands

    cabal configure
    cabal build
    cabal haddock
    cabal clean
    cabal sdist

The `install` command is somewhat different. It is an all-in-one operation. If
you run

    $ cabal install

in your build tree it will configure, build and install. It takes all the flags
that `configure` takes such as `--global` and `--prefix`.

In addition, if any dependencies are not installed it will download and install
them. If can also rebuild packages to ensure a consistent set of dependencies.

Commands for released hackage packages

    $ cabal update

This command gets the latest list of packages from the hackage server.
Currently this command has to be run manually occasionally, in particular if
you want to install a newly released package. 

    $ cabal install xmonad

This is the eponymous command. It installs one or more named packages (and all
their dependencies) from hackage.

By default it installs the latest available version however you can optionally
specify exact versions or version ranges. For example `cabal install alex-2.2`
or `cabal install parsec < 3`.

    $ cabal upgrade xmonad

This is a variation on the `install` command. Both mean to install the latest
version, the only difference is in the treatment of dependencies. The `install`
command tries to use existing installed versions of dependent packages while
the `upgrade` command tries to upgrade all the dependencies too.

    $ cabal list xml

This does a search of the installed and available packages. It does a
case-insensitive substring match on the package name.