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-17 04:30:01 +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), [don't work on old windows ? ](https://github.com/simonmichael/hledger/issues/774 ))</ 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
2018-05-17 04:43:40 +03:00
as an hour, 1G of free memory, and 1G of disk space.
(We're not bloated; we just sit atop a lot of fine Haskell engineering!)
You can kill and restart it without losing progress, and subsequent builds will be much faster.
2018-03-10 16:10:23 +03:00
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.