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: Download and run the latest development builds (-> Appveyor CI)
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
NixOS: nix-env -iA nixpkgs.haskellPackages.hledger \
  nixpkgs.haskellPackages.hledger-ui \
Sandstorm: hledger-web Sandstorm app -> demo
(your own fully-functional private/public hledger-web instance in 3 clicks)

B. I want to build the latest release

The latest release (see release notes) is a good choice. You have to build it, but that's pretty easy.

  1. Install stack. On Windows, the 64-bit version is recommended. On Arch, you may need to also install GHC manually.
    (If you're a cabal expert, feel free to use that instead, adapting these instructions appropriately.)

  2. stack install --resolver=nightly hledger [hledger-ui] [hledger-web] [hledger-api]
    Note you don't type the square brackets; they mean "this bit is optional". So eg if you don't care about the web tools, you would type stack install --resolver=nightly hledger hledger-ui
    On Windows, hledger-ui is not yet available.
    If stack says you need to run stack setup, do that first.
    Warnings about "No packages found in snapshot which provide a "hsc2hs" executable" can be ignored.
    If required C libraries (like curses) 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
  3. If stack warns that ~/.local/bin (or the Windows equivalent) is not in $PATH, fix that. Eg if you're a bash user:
    echo "export PATH=$PATH:~/.local/bin" >> ~/.bashrc && source ~/.bashrc
    Now you can run hledger --version, hledger-ui --version etc.

C. I want to build the development version

The dev version includes not-yet-released features and is stable enough for daily use.

  1. Install stack (see above) and git
  2. git clone hledger
  3. cd hledger
  4. stack install
    with the same caveats as mentioned above:

    • if stack says you need to run stack setup, do that first,
    • if building fails due to missing C libs, install those first
    • if stack warns that ~/.local/bin (or the Windows equivalent) is not in $PATH, fix that
    • warnings about "No packages found in snapshot which provide a hsc2hs executable" can be ignored

Cabal users can use the or cabal.project files instead.

D. I want to install all add-on commands

Some experimental commands are not built in to hledger, but included in the source as add-on commands, such as:
chart, check-dates, check-dupes, equity, print-unique, register-match, rewrite.

To install these and make them available in hledger's commands list:

  1. Install stack and git (see above)
  2. git clone hledger (as above)
  3. cd hledger
  4. bin/ (optional, makes them start faster)
  5. add the hledger bin/ directory to your $PATH

There is also a hledger-autosync symbolic link showing how to make the ledger-autosync tool available as a hledger command.

Other commands are published as separate packages:
hledger-diff, hledger-iadd, hledger-interest, hledger-irr.

Some are available in Stackage and can be installed with stack as in B above:

stack install --resolver nightly hledger-iadd hledger-interest

Others are available only on Hackage, so you must specify the Hackage version number. Eg:

stack install hledger-diff- hledger-irr-