hledger/site/download.md

166 lines
9.0 KiB
Markdown
Raw Normal View History

2015-11-04 05:59:12 +03:00
# Download
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 ?
2015-07-23 17:05:28 +03:00
<style>
tr { vertical-align:top; }
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; }
.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,
but they can be [out of date](https://repology.org/metapackage/hledger/badges) or incomplete.
|
|----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 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>
| Debian,&nbsp;Ubuntu: | **`sudo apt install hledger hledger-ui hledger-web`**
| Fedora,&nbsp;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 \`<br>&nbsp;&nbsp;`nixpkgs.haskellPackages.hledger-ui \`<br>&nbsp;&nbsp;`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
<a name="b"></a>
2018-01-22 23:14:20 +03:00
## B. build the latest release ?
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
(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.
<span class=warnings>
Some known build issues and workarounds:\
[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).
</span>
2018-01-22 23:14:20 +03:00
### 1. hledger-install
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)
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
(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:
**`curl https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh | bash`**
And here's the safer, more responsible way:
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*
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),
or [email](docs.html#helpfeedback):
**`bash -x hledger-install.sh 2>&1 | tee hledger-install.log`**
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:
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.
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
[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
&nbsp;&nbsp;`echo "export PATH=$PATH:~/.local/bin" >> ~/.bashrc && source ~/.bashrc`
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.
<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:
|
|-----------------|-----------------------------------
| Debian, Ubuntu: | `sudo apt install libncurses5-dev`
| Fedora, RHEL: | `sudo dnf install ncurses-devel`
<!--
If you need to build with an older GHC version for some reason, these commands should work
(except on Mac Sierra which [requires at least GHC 8.0.2/lts-8](https://ghc.haskell.org/trac/ghc/ticket/12479)):\
`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)* \
-->
<!-- keep synced with stack.yaml files -->
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:\
&nbsp;&nbsp;`stack install --resolver nightly hledger-lib-1.5 hledger-1.5 hledger-iadd-1.3.1`
### 3. cabal
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
<a name="c"></a>
2018-01-22 23:14:20 +03:00
## C. build the development version ?
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)).
2018-01-22 23:14:20 +03:00
1. **Install [`stack`](#stack) and [git](https://en.wikipedia.org/wiki/Git)**
2. **`git clone https://github.com/simonmichael/hledger`**
3. **`cd hledger`**
2018-01-22 23:14:20 +03:00
4. **`stack install [hledger]`** *# optionally specify just the hledger package to build less*
2018-01-22 23:14:20 +03:00
cabal users may find the `cabal-install.sh` or `cabal.project` files useful.
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. -->