# Download
Choose a method:
## A. I want to download a packaged version
Packaged versions are the quickest to install, but they sometimes lag behind the
latest release, or provide only some of the hledger tools. 
(Please help out by making these packages better.)
|
|----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Windows:             | see B below 
| Mac:                 | **`brew install hledger`**
| Arch Linux:          | **`pacaur -S hledger`**
| Debian, Ubuntu: | **`sudo apt install hledger hledger-ui hledger-web`** (note [#541](https://github.com/simonmichael/hledger/issues/541))
| Fedora, RHEL:   | **`sudo dnf install hledger`**
| Gentoo:              | **`sudo layman -a haskell && sudo emerge hledger hledger-ui hledger-web`**
| Void Linux:          | **`xbps-install -S hledger hledger-ui hledger-web hledger-api`**
| NixOS:               | **`nix-env -iA nixpkgs.haskellPackages.hledger \`
  `nixpkgs.haskellPackages.hledger-ui \`
  `nixpkgs.haskellPackages.hledger-web`**
| Sandstorm:           | **[hledger-web Sandstorm app](https://apps.sandstorm.io/app/8x12h6p0x0nrzk73hfq6zh2jxtgyzzcty7qsatkg7jfg2mzw5n90) -> demo**
(get your own private or public hledger-web instance in 3 clicks)
## B. I want to build the latest release
The latest release (see [release notes](release-notes.html)) is a good choice.
You have to build it, but this is relatively easy:
1. **Install [`stack`](http://haskell-lang.org/get-started)**\
   \
   On Windows, the 64-bit version is [recommended](https://github.com/simonmichael/hledger/issues/275#issuecomment-123834252).\
   On Arch, you [may need to also install GHC manually](https://github.com/simonmichael/hledger/issues/434).\
   Avoid really old packaged stack versions (< 1.0) which give ["Invalid package ID" errors](https://github.com/simonmichael/hledger/issues/513);
   consider downloading the latest stack binary instead.\
   \
   As part of stack installation you should also [add `~/.local/bin` (or Windows equivalent) to \$PATH](https://docs.haskellstack.org/en/stable/install_and_upgrade/#path).
   Eg if you're a bash user:\
   `echo "export PATH=$PATH:~/.local/bin" >> ~/.bashrc && source ~/.bashrc`
2. **`stack install hledger-lib-1.3 hledger-1.3 [hledger-ui-1.3] [hledger-web-1.3] [hledger-api-1.3]`**\   
   \
   This command installs the latest hledger packages (and the haskell libraries and tools they depend on) from an
   [appropriate](https://www.stackage.org/package/hledger-lib)
   [stackage](https://www.stackage.org/package/hledger)
   [snapshot](https://www.stackage.org/package/hledger-ui)
   [and/or](https://www.stackage.org/package/hledger-web)
   [hackage](https://www.stackage.org/package/hledger-api),
   and will take a while.\
   You can add `--dry-run` to see what it plans to do, and kill/restart it without losing progress.\
   Don't type the square brackets; they indicate optional packages which you can skip to save time.\
   hledger-ui is [not yet available on Windows](https://github.com/coreyoconnor/vty/pull/1).\
   \
   If it says you need to run `stack setup`, do that then run the install command again.\
   If it gives "Invalid package ID" errors, get a more up-to-date version of stack (see step 1).\
   If it gives errors due to missing C libraries (like curses or terminfo), install those manually, eg like so:
    |
    |-----------------|-----------------------------------
    | Debian, Ubuntu: | `sudo apt install libncurses5-dev` 
    | Fedora, RHEL:   | `sudo dnf install ncurses-devel`
   
([`cabal`](https://www.haskell.org/cabal/) experts, feel free to use that instead of stack.)
Now you should be able to run `hledger --version`
(and `hledger-ui --version`, `hledger-web --version` if you installed those),
and see versions similar to those above.
## C. I want to build the development version
The [dev version](https://github.com/simonmichael/hledger/commits/master) includes not-yet-released features and is stable enough for daily use.
1. **Install [`stack`](http://haskell-lang.org/get-started) and [git](https://en.wikipedia.org/wiki/Git)**
   (see notes in B above)
2. **`git clone http://code.hledger.org hledger`**
3. **`cd hledger`**
4. **`stack install`**
Cabal users can use the `cabal-install.sh` or `cabal.project` files instead.
## D. I want to install more commands
Additional [add-on commands](/hledger.html#third-party-add-ons)
can be installed. Eg:\
`stack install hledger-iadd-1.2.1` or `stack install --resolver nightly hledger-iadd`.
More, [experimental add-ons](/hledger.html#experimental-add-ons) are
included in the hledger source repo; to install these:
1. **Download the hledger source code** (as in C above)
2. **In the hledger directory, run `bin/compile.sh`** (installs dependencies & compiles for speed)
3. **Add the `hledger/bin/` directory to your `$PATH`** (as in B above) 
Now you should be able to run `hledger iadd --version`, `hledger check --help` etc.