As a haskell package, git-annex can be installed using cabal. 

This involves building a lot of haskell packages from source, and so it has
a lot of moving parts, and it's not uncommon for it to be broken from time
to time.

If you are not comfortable tracking down and dealing with library build
problems, installing git-annex with cabal is probably not the right choice
for you!

## prerequisites

Start by installing the [Haskell Platform][]. In Debian, this is as
simple as:

    sudo apt-get install haskell-platform

 [Haskell Platform]: http://hackage.haskell.org/platform/

## minimal build

This builds git-annex without some features that require C libraries, that
can be harder to get installed. This is plenty to get started using it,
although it does not include the assistant or webapp.

	cabal update
	PATH=$HOME/bin:$PATH
	cabal install git-annex --bindir=$HOME/bin -f"-assistant -webapp -webdav -pairing -xmpp -dns"

## full build

To build with all features enabled, including the assistant and webapp,
you will need to install several C libraries and their headers,
including libgnutls, libgsasl, libxml2, and zlib. Then run:

	cabal update
	PATH=$HOME/bin:$PATH
	cabal install c2hs --bindir=$HOME/bin
	cabal install git-annex --bindir=$HOME/bin

## building from git checkout

But maybe you want something newer (or older). Then [[download]] the version
you want, and use cabal as follows inside its source tree:

	cabal update
	PATH=$HOME/bin:$PATH
	cabal install c2hs --bindir=$HOME/bin
	cabal install --only-dependencies
	cabal configure
	cabal build
	cabal install --bindir=$HOME/bin

## EKG

When building with cabal, you can optionally enable the 
[[EKG monitoring interface|ekg]]. This is great for debugging resource
usage problems.
