# Download
## 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. (Packagers welcome!)
|
|----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Windows:             | see B below 
| Mac:                 | **`brew install hledger`**
| Debian, Ubuntu: | **`sudo apt install hledger hledger-ui hledger-web`**
| 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 normally that should be quite easy:
1. **Install [`stack`](http://haskell-lang.org/get-started)**\
   Note some packaged versions of stack are too old and will give ["Invalid package ID"](https://github.com/simonmichael/hledger/issues/513) in step 2
   (and their builtin "upgrade" command will be slow); in this case consider downloading the binary instead.\
   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).\
   You should also add [~/.local/bin (or Windows equivalent)](https://docs.haskellstack.org/en/stable/install_and_upgrade/#path)
   to your \$PATH so that you can easily run stack-installed tools.
   Eg if you're a bash user:\
   `echo "export PATH=$PATH:~/.local/bin" >> ~/.bashrc && source ~/.bashrc`
2. **`stack install hledger-lib-1.2 hledger-1.2 [hledger-ui-1.2] [hledger-web-1.2] [hledger-api-1.2]`**\   
   Note specifying the version as above forces stack to select exactly this version, 
   which is sometimes necessary just after a release;
   at other times the following command may be preferable 
   [to](https://www.stackage.org/package/hledger-lib)
   [get](https://www.stackage.org/package/hledger)
   [any](https://www.stackage.org/package/hledger-ui)
   [newer](https://www.stackage.org/package/hledger-web)
   [versions](https://www.stackage.org/package/hledger-api):\
   `stack install --resolver=nightly hledger [hledger-ui] [hledger-web] [hledger-api]`\
   If stack says you need to run `stack setup`, do that first.\
   Don't type the square brackets; they mean that hledger-ui etc. are optional.\
   On Windows, hledger-ui is [not yet available](https://github.com/coreyoconnor/vty/pull/1).\
   If required C libraries (like curses or terminfo) are not installed, you might need to install those manually and try again.
   Eg:
    |
    |-----------------|-----------------------------------
    | Debian, Ubuntu: | `sudo apt install libncurses5-dev` 
    | Fedora, RHEL:   | `sudo dnf install ncurses-devel`
   
If you're a [`cabal`](https://www.haskell.org/cabal/) expert, feel free to use that instead of stack, adapting these instructions appropriately.
Now you should be able to run `hledger --version`, `hledger-ui --version` etc.
## 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.