2018-03-10 17:08:32 +03:00
- toc
2015-11-04 05:59:12 +03:00
# Download
2015-11-10 01:10:59 +03:00
2018-04-28 22:34:59 +03:00
Adventurer, choose your path! No, really it's quite easy. Often. Do you want to..
2017-04-28 17:38:59 +03:00
< a name = "a" > < / a >
2017-04-13 18:42:24 +03:00
2018-04-28 22:34:59 +03:00
## a. download a binary/system package
2014-11-05 08:18:13 +03:00
2015-07-23 17:05:28 +03:00
< style >
2018-03-10 16:10:23 +03:00
table { margin-left:1em; }
2018-03-11 15:25:49 +03:00
div > p > strong > code { margin-left:1em; } /* top-level code lines */
2018-03-10 17:08:32 +03:00
code { white-space:nowrap; }
2015-07-23 17:05:28 +03:00
tr { vertical-align:top; }
2016-02-21 23:39:32 +03:00
td { padding-bottom:.5em; padding-right:1em; }
2016-09-13 22:08:37 +03:00
td:first-of-type {
/* white-space:nowrap; */
/* width:1%; */
}
a { white-space:nowrap; }
2018-03-04 17:47:43 +03:00
.warnings {
font-style:italic;
}
.warnings > a:before {
content: "⚠ ";
color:red;
}
2015-07-23 17:05:28 +03:00
< / style >
2018-04-28 22:34:59 +03:00
hledger binaries or system packages are quickest to install,
but they can be [out of date ](https://repology.org/metapackage/hledger/badges ) or incomplete.
(Please help your local packagers with this!).
2018-01-07 18:26:26 +03:00
2016-10-30 16:38:33 +03:00
|
2017-04-02 21:10:58 +03:00
|----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2018-05-04 07:22:20 +03:00
| Windows: | [1.9.1 ](https://ci.appveyor.com/api/buildjobs/ln9saus4y41gr1n8/artifacts/hledger.zip ) or [latest nightly dev build ](https://ci.appveyor.com/api/projects/simonmichael/hledger/artifacts/hledger.zip?branch=master ) (< span class = warnings > [no hledger-ui](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444))</ span >
2018-04-28 19:06:58 +03:00
| Mac: | ** `brew install hledger` ** < span class = warnings > ([only hledger CLI](https://github.com/simonmichael/hledger/issues/321#issuecomment-179920520))</ span >
2018-04-28 22:13:06 +03:00
| Arch Linux: | ** `pacman -S hledger` **
2017-07-11 07:48:53 +03:00
| Debian, Ubuntu: | ** `sudo apt install hledger hledger-ui hledger-web` **
2017-04-02 21:10:58 +03:00
| Fedora, RHEL: | ** `sudo dnf install hledger` **
| Gentoo: | ** `sudo layman -a haskell && sudo emerge hledger hledger-ui hledger-web` **
2017-04-06 18:24:45 +03:00
| Void Linux: | ** `xbps-install -S hledger hledger-ui hledger-web hledger-api` **
2018-04-28 19:06:58 +03:00
| NixOS: | ** `nix-env -iA nixpkgs.haskellPackages.hledger nixpkgs.haskellPackages.hledger-ui nixpkgs.haskellPackages.hledger-web` ** < span class = warnings > ([problems with hledger-ui on MacOS ?](https://github.com/simonmichael/hledger/issues/613))</ span >
2018-03-10 17:08:32 +03:00
| Sandstorm: | ** [hledger-web Sandstorm app ](https://apps.sandstorm.io/app/8x12h6p0x0nrzk73hfq6zh2jxtgyzzcty7qsatkg7jfg2mzw5n90 ) -> demo** - a hledger-web server in 3 clicks < span class = warnings > ([features needed](https://github.com/simonmichael/hledger/issues/425))</ span >
2014-11-13 05:02:40 +03:00
2016-10-30 17:10:35 +03:00
2016-10-30 16:38:33 +03:00
< a name = "b" > < / a >
2015-11-10 01:10:59 +03:00
2018-04-28 22:34:59 +03:00
## b. build the latest release
2014-11-11 00:38:05 +03:00
2018-03-10 17:08:32 +03:00
Good choice! You'll get the latest features mentioned in the [release notes ](release-notes.html ).
Below are three ways to build the latest release, in order of preference.
2018-01-22 23:25:20 +03:00
2018-03-10 16:10:23 +03:00
Note, building all hledger tools for the first time could take as much
as an hour, 1G of free memory, and 1G of disk space. You can kill and
restart it without losing progress, and subsequent builds will be much
faster.
Also, here are some known build issues and workarounds:\
2018-03-04 17:47:43 +03:00
< span class = warnings >
2018-04-28 22:13:06 +03:00
[arch: advice from Arch wiki ](https://wiki.archlinux.org/index.php/Haskell )\
[arch: No information found for ghc-8.4.2 ](https://github.com/commercialhaskell/stack/issues/3984 )\
<!-- [arch: some past problems ](https://github.com/simonmichael/hledger/issues/668 ) -->
2018-03-10 16:10:23 +03:00
[freebsd 12: no cabal file found ](https://github.com/simonmichael/hledger/issues/709 )\
[openbsd 6: exec permission denied ](https://deftly.net/posts/2017-10-12-using-cabal-on-openbsd.html )\
[openbsd: how to get stack ](https://github.com/commercialhaskell/stack/issues/2822#issuecomment-318892816 )\
2018-03-04 17:47:43 +03:00
< / span >
2018-01-22 23:14:20 +03:00
2018-04-28 22:34:59 +03:00
< a name = "b1" > < / a >
### b1. with hledger-install
2018-01-22 23:14:20 +03:00
2018-03-10 16:10:23 +03:00
Our [hledger-install script ](https://github.com/simonmichael/hledger/tree/master/hledger-install )
is recommended as the easiest and most-likely-to-just-work build method,
on GNU/linux, mac and freeBSD
(and possibly other BSDs if you install cabal-install first, or on unixlike environments on windows):
2018-02-17 15:23:15 +03:00
2018-03-10 16:10:23 +03:00
- it requires only bash and curl/wget, and internet access
- it automates the install process using stack or cabal, avoiding common pitfalls
- it installs stack and GHC in ~/.stack, if needed
- it installs the latest release of hledger and addon tools in ~/.local/bin or ~/.cabal/bin
2018-01-22 23:14:20 +03:00
2018-02-17 15:44:41 +03:00
Here's the quick, non-secure way to run it:
2018-02-17 15:23:15 +03:00
** `curl https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh | bash` **
2018-03-10 16:10:23 +03:00
And here's the more responsible way:
2017-07-21 11:33:07 +03:00
2017-10-11 01:34:10 +03:00
** `curl -O https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh` **\
2018-01-22 23:14:20 +03:00
** `less hledger-install.sh` ** *# do security review* \
2018-03-10 16:10:23 +03:00
** `bash hledger-install.sh` **
#### Link errors ?
If you see link errors (like "/bin/ld.gold: error: cannot find -ltinfo"),
you might need to install some extra system packages, such as the below, and try again
(please send any updates for this list):
|
|-----------------|-------------------------------------------------------
| Centos: | ** `sudo yum install -y libstdc++-devel ncurses-devel zlib-devel` ** *# [?](https://github.com/simonmichael/hledger/issues/715)*
| Debian, Ubuntu: | ** `sudo apt install -y libncurses5` ** *# ?*
| Fedora, RHEL: | ** `sudo dnf install -y ncurses-devel` ** *# ?*
2017-07-21 11:33:07 +03:00
2018-03-10 16:10:23 +03:00
#### Set up $PATH
2018-03-07 21:15:55 +03:00
2018-03-10 16:10:23 +03:00
You should
[extend your \$PATH with `~/.local/bin` ](https://docs.haskellstack.org/en/stable/install_and_upgrade/#path ) (for stack)
and/or `~/.cabal/bin` (for cabal).
2018-03-10 17:08:32 +03:00
Eg, if you use bash:
2018-03-10 16:10:23 +03:00
**`echo "export PATH=~/.local/bin:~/.cabal/bin:$PATH" >> ~/.bashrc & & source ~/.bashrc`**
2018-03-10 17:08:32 +03:00
#### Test
Now you should be able to run the hledger tools and see the expected versions. Eg:
2018-03-11 15:25:49 +03:00
```shell
2018-03-10 17:08:32 +03:00
$ hledger --version
2018-03-31 20:34:22 +03:00
hledger 1.9
2018-03-10 17:08:32 +03:00
$ hledger-ui --version
2018-03-31 20:34:22 +03:00
hledger-ui 1.9
2018-03-10 17:08:32 +03:00
$ hledger web --version
2018-03-31 20:34:22 +03:00
hledger-web 1.9
2018-03-10 17:08:32 +03:00
$ hledger iadd --version
2018-03-31 20:34:22 +03:00
This is hledger-iadd version 1.3.2
2018-03-10 17:08:32 +03:00
```
2018-03-10 16:10:23 +03:00
#### Need help ?
2018-03-10 17:08:32 +03:00
If you are having trouble, please capture a debug log and send it to me via
2018-02-17 15:23:15 +03:00
[paste ](http://paste.hledger.org ) & [IRC ](http://irc.hledger.org ),
2018-03-10 16:10:23 +03:00
the [issue tracker ](http://bugs.hledger.org ),
2018-02-17 15:23:15 +03:00
or [email ](docs.html#helpfeedback ):
2017-07-21 11:33:07 +03:00
2018-02-17 15:23:15 +03:00
** `bash -x hledger-install.sh 2>&1 | tee hledger-install.log` **
2017-07-21 11:33:07 +03:00
2018-04-28 22:34:59 +03:00
< a name = "b2" > < / a >
### b2. with stack
2018-01-22 23:14:20 +03:00
2018-03-10 16:10:23 +03:00
[`stack` ](http://haskell-lang.org/get-started ) is the newer and easier of the Haskell build tools.
If you prefer more control or if hledger-install failed, here's how to use stack yourself:
2017-07-21 11:33:07 +03:00
2018-01-22 23:14:20 +03:00
1. **Install or upgrade to the latest stack** \
2018-04-20 16:54:56 +03:00
The latest version of stack (1.7) is recommended, for best avoidance of ecosystem breakages.
2018-02-19 01:38:38 +03:00
If you can get at least stack 1.3 installed, eg from your system packages, you can usually run `stack upgrade` to quickly upgrade it to the latest.
2018-01-22 23:14:20 +03:00
2018-03-10 16:10:23 +03:00
On Windows, the 64-bit version of stack is [preferred ](https://github.com/simonmichael/hledger/issues/275#issuecomment-123834252 ).
2018-01-22 23:14:20 +03:00
2018-04-13 20:24:57 +03:00
2. ** `stack install --resolver=lts hledger-lib-1.9 hledger-1.9 [hledger-ui-1.9] [hledger-web-1.9.1] [hledger-api-1.9]` **\
2018-03-10 17:08:32 +03:00
This installs the specified hledger packages (and dependencies) from [Stackage ](https://www.stackage.org ) and/or [Hackage ](http://hackage.haskell.org ).
2018-03-10 16:10:23 +03:00
The bracketed packages are optional; if you include them, don't type the brackets, and do always
include the preceding hledger-lib and hledger packages.\
2018-04-28 19:06:58 +03:00
< span class = warnings > ([windows: hledger-ui is not available](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444))< / span >
2018-03-10 16:10:23 +03:00
The command above uses stackage's nightly snapshot.
You might be able to reduce build time by specifying an older snapshot that you've used before (eg: `--resolver=lts-10.8` ), or by omitting the --resolver option.
To estimate the build time, add `--dry-run` .
You can kill and restart this without losing progress.
2018-04-20 16:54:56 +03:00
If you see "was generated with a newer version of hpack, please upgrade and try again" errors, you can ignore them.
(Upgrade to the latest stack release to stop them.)
2017-10-01 05:38:42 +03:00
<!--
2017-07-13 11:21:16 +03:00
If you need to build with an older GHC version for some reason, these commands should work
2017-07-15 12:05:31 +03:00
(except on Mac Sierra which [requires at least GHC 8.0.2/lts-8 ](https://ghc.haskell.org/trac/ghc/ticket/12479 )):\
2018-04-08 18:08:51 +03:00
`stack install --resolver=lts-7 hledger-lib-1.3 hledger-1.3 hledger-ui-1.3 hledger-web-1.3 hledger-api-1.3 brick-0.19 vty-5.15.1 data-clist-0.1.2.0` *# (GHC 8.0.1)* \
`stack install --resolver=lts-6 hledger-lib-1.3 hledger-1.3 hledger-ui-1.3 hledger-web-1.3 hledger-api-1.3 megaparsec-5.3.1 brick-0.19 vty-5.15.1 data-clist-0.1.2.0 text-zipper-0.10` *# (GHC 7.10.3)* \
2018-03-10 14:27:23 +03:00
--> <!-- keep synced with stack.yaml files -->
2017-07-13 11:21:16 +03:00
2018-03-10 17:08:32 +03:00
3. ** [If you see link errors.. ](#link-errors )**
2018-03-10 16:10:23 +03:00
2018-03-10 17:08:32 +03:00
4. ** [Set up \$PATH ](#set-up-path )**
2018-03-10 16:10:23 +03:00
2018-03-10 17:08:32 +03:00
5. **Install addons ?** \
Additional [add-on commands ](/hledger.html#third-party-add-ons ),
such as
[hledger-diff ](http://hackage.haskell.org/package/hledger-diff ),
[hledger-iadd ](http://hackage.haskell.org/package/hledger-iadd ),
[hledger-interest ](http://hackage.haskell.org/package/hledger-interest ),
and [hledger-irr ](http://hackage.haskell.org/package/hledger-irr )
can be installed similarly to the above. Eg:
2018-03-10 16:10:23 +03:00
2018-04-08 18:08:51 +03:00
** `stack install --resolver=lts hledger-lib-1.9 hledger-1.9 hledger-iadd-1.3.2` **
2018-03-10 16:10:23 +03:00
2018-03-10 17:08:32 +03:00
6. ** [Test ](#test )**
2018-01-22 23:14:20 +03:00
2018-04-28 22:34:59 +03:00
< a name = "b3" > < / a >
### b3. with cabal
2016-09-13 19:00:17 +03:00
2018-04-28 22:34:59 +03:00
[cabal ](https://www.haskell.org/cabal/ ) is the other Haskell build tool. If you're a cabal expert, feel free to use this in the usual way.
2015-07-14 07:56:39 +03:00
2016-10-30 16:38:33 +03:00
< a name = "c" > < / a >
2016-09-13 19:00:17 +03:00
2018-04-28 22:34:59 +03:00
## c. build the development version
2016-09-13 19:00:17 +03:00
2018-03-10 16:10:23 +03:00
Also a good choice. Our master branch is stable enough for daily use,
2018-03-10 17:08:32 +03:00
and includes the [latest improvements ](https://github.com/simonmichael/hledger/commits/master ).
2016-09-13 19:00:17 +03:00
2018-03-10 16:10:23 +03:00
1. **Install [git](https://en.wikipedia.org/wiki/Git) and [`stack`](#stack)**
2017-12-22 17:40:44 +03:00
2. ** `git clone https://github.com/simonmichael/hledger` **
2017-04-02 21:10:58 +03:00
3. ** `cd hledger` **
2018-04-09 03:53:23 +03:00
4. ** `stack install [hledger]` ** *# build all (or, just the command line UI)*
2018-03-10 17:08:32 +03:00
5. ** [If you see link errors.. ](#link-errors )**
2018-03-10 16:10:23 +03:00
6. ** [Set up \$PATH ](#set-up-path )**
2018-03-10 17:08:32 +03:00
7. ** [Test ](#test )**
2018-03-31 20:34:22 +03:00
(Development versions will have a .99 suffix, 1.9.99 means 2.0-dev)
2017-01-08 22:00:10 +03:00
2018-01-22 23:14:20 +03:00
cabal users may find the `cabal-install.sh` or `cabal.project` files useful.