2015-11-04 05:59:12 +03:00
# Download
2015-11-10 01:10:59 +03:00
2018-01-22 23:25:20 +03:00
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-01-23 01:52:22 +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 >
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-01-22 23:25:20 +03:00
System packages are quickest to install,
2018-01-07 18:26:26 +03:00
but they can be [out of date ](https://repology.org/metapackage/hledger/badges ) or incomplete.
2014-11-11 00:38:05 +03:00
2016-10-30 16:38:33 +03:00
|
2017-04-02 21:10:58 +03:00
|----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2018-03-04 17:47:43 +03:00
| Windows: | [Latest developer builds ](https://ci.appveyor.com/project/simonmichael/hledger/build/artifacts ) < span class = warnings > ([appveyor builds are not up to date](https://github.com/simonmichael/hledger/issues/694), [no hledger-ui ](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444 ))</ span >
| Mac: | ** `brew install hledger` ** < span class = warnings > ([only hledger CLI is packaged](https://github.com/simonmichael/hledger/issues/321#issuecomment-179920520))</ span >
| Arch Linux: | ** `pacman -S hledger` ** < span class = warnings > ([haskell problems are common on Arch at present](https://github.com/simonmichael/hledger/issues/668))</ span >
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-03-04 17:47:43 +03:00
| NixOS: | ** `nix-env -iA nixpkgs.haskellPackages.hledger \` < br > `nixpkgs.haskellPackages.hledger-ui \`< br > `nixpkgs.haskellPackages.hledger-web`** < span class = warnings > ([problems building hledger-ui on MacOS](https://github.com/simonmichael/hledger/issues/613))</ span >
| 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-01-22 23:14:20 +03:00
## B. build the latest release ?
2014-11-11 00:38:05 +03:00
2018-01-22 23:14:20 +03:00
Good choice! The [release notes ](release-notes.html ) show what you'll get.
2018-02-17 15:44:41 +03:00
Below are three ways to build hledger, in order of preference.
2018-01-22 23:25:20 +03:00
2018-02-17 15:44:41 +03:00
But first, a slight warning: the first build of a haskell application can take
significant time (minutes to 1 hour), memory (eg 1G+), and disk space
2018-02-17 15:23:15 +03:00
(eg 1G in ~/.stack or ~/.cabal). On the upside, it can be left
unattended, you can kill and restart it without losing progress, and
subsequent builds will be quicker.
2018-03-04 17:47:43 +03:00
< span class = warnings >
Some known build issues and workarounds:\
2018-02-19 03:50:28 +03:00
[freebsd 12 no cabal file found ](https://github.com/simonmichael/hledger/issues/709 ),\
2018-02-19 05:14:15 +03:00
[openbsd 6 exec permission denied ](https://deftly.net/posts/2017-10-12-using-cabal-on-openbsd.html ),\
2018-03-04 17:47:43 +03:00
[openbsd how to get stack ](https://github.com/commercialhaskell/stack/issues/2822#issuecomment-318892816 ).
< / span >
2018-01-22 23:14:20 +03:00
### 1. hledger-install
2018-02-19 01:49:19 +03:00
On supported POSIX systems - GNU/linux, mac, freeBSD (might work on other BSDs if you install cabal-install first), possibly unixlike environments on windows -
2018-02-17 15:44:41 +03:00
our [hledger-install.sh ](https://github.com/simonmichael/hledger/tree/master/hledger-install )
2018-02-17 15:23:15 +03:00
is the build method most likely to just work:
- it requires only that you have bash and curl (or wget) installed, and internet access.
- it uses haskell build tools like stack, cabal and GHC, installing stack/GHC if needed (in ~/.stack).
2018-02-17 15:44:41 +03:00
- it avoids common pitfalls, such as unreliable build plans and all-or-nothing builds
- it installs the latest release of hledger and the full suite of addon tools
2018-02-17 15:23:15 +03:00
(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` **
And here's the safer, 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-02-17 15:44:41 +03:00
** `bash hledger-install.sh` ** *# or bash -x, to log commands*
2017-07-21 11:33:07 +03:00
2018-02-17 15:23:15 +03:00
If you have any trouble, you can help greatly by capturing a debug log
and sending it to me via
[paste ](http://paste.hledger.org ) & [IRC ](http://irc.hledger.org ),
2018-02-17 15:44:41 +03:00
an [issue ](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-01-22 23:14:20 +03:00
### 2. stack
[`stack` ](http://haskell-lang.org/get-started ) is the newer and easier of the two Haskell build tools.
Here's how to use it directly to install hledger:
2017-07-21 11:33:07 +03:00
2018-01-22 23:14:20 +03:00
1. **Install or upgrade to the latest stack** \
The latest version of stack is recommended, as it is the best at avoiding ecosystem breakages and most likely to just work.
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
On Windows, the 64-bit version of stack 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 ). \ -->
Follow stack's advice to
2018-02-17 15:23:15 +03:00
[add `~/.local/bin` to your \$PATH ](https://docs.haskellstack.org/en/stable/install_and_upgrade/#path ) (`%APPDATA%\local\bin` on Windows).
2018-01-22 23:14:20 +03:00
Eg, if you're a bash user:\
2017-07-13 10:45:09 +03:00
`echo "export PATH=$PATH:~/.local/bin" >> ~/.bashrc & & source ~/.bashrc`
2017-04-02 21:10:58 +03:00
2018-01-22 19:24:53 +03:00
2. ** `stack install --resolver=nightly hledger-lib-1.5 hledger-1.5 [hledger-ui-1.5] [hledger-web-1.5] [hledger-api-1.5]` **\
2018-01-22 23:14:20 +03:00
This installs the specified hledger packages (and required haskell libraries and tools) from [Stackage ](https://www.stackage.org ) (and if needed, [Hackage ](http://hackage.haskell.org )).
Specifying stackage's nightly resolver (snapshot) requires the most rebuilding, but is the most reliable;
you can try reducing build time by specifying another resolver that you've installed from previously, or no --resolver option.\
Add `--dry-run` to see the build plan. You can kill and restart this without losing progress.
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 in the command, otherwise stack may complain.
2018-03-04 17:47:43 +03:00
< span class = warnings > ([hledger-ui is not yet available on Windows, alas](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444).)< / span >
2018-01-22 23:14:20 +03:00
If you get errors due to missing C libraries like curses or terminfo, you'll need to find out the corresponding
system packages and install those manually. Eg:
2016-09-13 19:00:17 +03:00
2016-10-30 16:38:33 +03:00
|
2017-04-02 21:10:58 +03:00
|-----------------|-----------------------------------
| Debian, Ubuntu: | `sudo apt install libncurses5-dev`
| Fedora, RHEL: | `sudo dnf install ncurses-devel`
2016-09-13 19:00:17 +03:00
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 )):\
2017-07-21 11:33:07 +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)* \
2017-10-01 05:38:42 +03:00
-->
2017-07-16 09:24:03 +03:00
<!-- keep synced with stack.yaml files -->
2017-07-13 11:21:16 +03:00
2017-07-16 09:24:03 +03:00
Now you should be able to run `hledger --version`
2018-01-22 23:14:20 +03:00
(and `hledger-ui --version` , `hledger-web --version` etc. if installed)
and see the latest version number.
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:\
`stack install --resolver nightly hledger-lib-1.5 hledger-1.5 hledger-iadd-1.3.1`
### 3. cabal
2016-09-13 19:00:17 +03:00
2018-01-22 23:14:20 +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 instead.
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-01-22 23:14:20 +03:00
## C. build the development version ?
2016-09-13 19:00:17 +03:00
2018-01-22 23:14:20 +03:00
Also a good choice. Our master branch is kept stable enough for daily use,
and includes the very latest improvements ([commits](https://github.com/simonmichael/hledger/commits/master)).
2016-09-13 19:00:17 +03:00
2018-01-22 23:14:20 +03:00
1. **Install [`stack`](#stack) and [git](https://en.wikipedia.org/wiki/Git)**
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-01-22 23:14:20 +03:00
4. ** `stack install [hledger]` ** *# optionally specify just the hledger package to build less*
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.
2017-01-08 22:00:10 +03:00
2018-01-22 23:14:20 +03:00
<!-- now covered by stack.yaml I think:
Nix users taking advantage of Stack integration may need to use Stack's `--no-nix-pure` flag to build hledger. -->