docs: split out install guide, some manual cleanups
This commit is contained in:
parent
853c07bf9e
commit
9070364b35
152
INSTALL.md
Normal file
152
INSTALL.md
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
---
|
||||||
|
title: hledger Installation Guide
|
||||||
|
---
|
||||||
|
|
||||||
|
# Installation Guide
|
||||||
|
|
||||||
|
hledger works on linux, mac and windows. You can fund ready-to-run
|
||||||
|
binaries of the latest release - see the [download page](DOWNLOAD.html).
|
||||||
|
|
||||||
|
Otherwise, build the latest release from Hackage using cabal-install.
|
||||||
|
Ensure you have [GHC](http://hackage.haskell.org/ghc/) 7.0 or greater or
|
||||||
|
the [Haskell Platform](http://hackage.haskell.org/platform/) installed,
|
||||||
|
then:
|
||||||
|
|
||||||
|
$ cabal update
|
||||||
|
$ cabal install hledger
|
||||||
|
|
||||||
|
To also install the web interface, do:
|
||||||
|
|
||||||
|
$ cabal install hledger-web
|
||||||
|
|
||||||
|
Then try it:
|
||||||
|
|
||||||
|
$ hledger
|
||||||
|
|
||||||
|
If you get "hledger not found" or similar, you should add cabal's bin
|
||||||
|
directory to your PATH environment variable. Eg on unix-like systems,
|
||||||
|
something like:
|
||||||
|
|
||||||
|
$ echo 'export PATH=$PATH:~/cabal/bin' >> ~/.bash_profile
|
||||||
|
$ source ~/.bash_profile
|
||||||
|
|
||||||
|
To build the latest [development version](DEVELOPMENT.html) do:
|
||||||
|
|
||||||
|
$ cabal update
|
||||||
|
$ darcs get --lazy http://hub.darcs.net/simon/hledger
|
||||||
|
$ cd hledger
|
||||||
|
$ make install (or do cabal install inside hledger-lib/, hledger/ etc.)
|
||||||
|
|
||||||
|
Some add-on packages are available on Hackage:
|
||||||
|
[hledger-vty](http://hackage.haskell.org/package/hledger-vty),
|
||||||
|
[hledger-chart](http://hackage.haskell.org/package/hledger-chart),
|
||||||
|
[hledger-interest](http://hackage.haskell.org/package/hledger-interest).
|
||||||
|
These are without an active maintainer, and/or platform-specific, so installing them may be harder.
|
||||||
|
|
||||||
|
Note: to use non-ascii characters like £, you might need to [configure a suitable locale](MANUAL.html#locale).
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
There are a lot of ways things can go wrong. Here are
|
||||||
|
some known issues and things to try. Please also seek
|
||||||
|
[support](DEVELOPMENT.html#support) from the
|
||||||
|
[IRC channel](irc://irc.freenode.net/#ledger),
|
||||||
|
[mail list](http://list.hledger.org) or
|
||||||
|
[bug tracker](http://bugs.hledger.org).
|
||||||
|
|
||||||
|
Starting from the top, consider whether each of these might apply to
|
||||||
|
you. Tip: blindly reinstalling/upgrading everything in sight probably
|
||||||
|
won't work, it's better to go in small steps and understand the problem,
|
||||||
|
or get help.
|
||||||
|
|
||||||
|
#. **Did you cabal update ?**
|
||||||
|
If not, `cabal update` and try again.
|
||||||
|
|
||||||
|
#. **Do you have a new enough version of GHC ?**
|
||||||
|
Run `ghc --version`. hledger requires GHC 7.0 or greater
|
||||||
|
(on [some platforms](#5551), 7.2.1 can be helpful).
|
||||||
|
|
||||||
|
#. **Do you have a new enough version of cabal ?**
|
||||||
|
Avoid ancient versions. `cabal --version` should report at least
|
||||||
|
0.10 (and 0.14 is much better). You may be able to upgrade it with:
|
||||||
|
|
||||||
|
$ cabal update
|
||||||
|
$ cabal install cabal-install-0.14
|
||||||
|
|
||||||
|
#. **Are your installed GHC/cabal packages in good repair ?**
|
||||||
|
Run `ghc-pkg check`. If it reports problems, some of your packages have
|
||||||
|
become inconsistent, and you should fix these first.
|
||||||
|
[ghc-pkg-clean](https://gist.github.com/1185421) is an easy way.
|
||||||
|
|
||||||
|
#. <a name="cabaldeps" />**cabal can't satisfy the new dependencies due to old installed packages**
|
||||||
|
Cabal dependency failures become more likely as you install more
|
||||||
|
packages over time. If `cabal install hledger-web --dry` says it can't
|
||||||
|
satisfy dependencies, you have this problem. You can:
|
||||||
|
|
||||||
|
a. try to understand which packages to remove (with `ghc-pkg unregister`)
|
||||||
|
or which constraints to add (with `--constraint 'PKG == ...'`) to help cabal
|
||||||
|
find a solution
|
||||||
|
|
||||||
|
b. install into a fresh environment created with
|
||||||
|
[virthualenv](http://hackage.haskell.org/package/virthualenv) or
|
||||||
|
[cabal-dev](http://hackage.haskell.org/package/cabal-dev)
|
||||||
|
|
||||||
|
c. or (easiest) erase your installed packages with
|
||||||
|
[ghc-pkg-reset](https://gist.github.com/1185421) and try again.
|
||||||
|
|
||||||
|
#. **Dependency or compilation error in one of the new packages ?**
|
||||||
|
If cabal starts downloading and building packages and then terminates
|
||||||
|
with an error, look at the output carefully and identify the problem
|
||||||
|
package(s). If necessary, add `-v2` or `-v3` for more verbose
|
||||||
|
output. You can install the new packages one at a time to troubleshoot,
|
||||||
|
but remember cabal is smarter when installing all packages at once.
|
||||||
|
|
||||||
|
Often the problem is that you need to install a particular C library
|
||||||
|
using your platform's package management system. Or the dependencies
|
||||||
|
specified on a package may need updating. Or there may be a compilation
|
||||||
|
error. If you find an error in a hledger package, check the
|
||||||
|
[recent commits](http://hub.darcs.net/simon/hledger/changes) to
|
||||||
|
see if the [latest development version](#installing) might have a fix.
|
||||||
|
|
||||||
|
#. **ExitFailure 11**
|
||||||
|
See
|
||||||
|
[http://hackage.haskell.org/trac/hackage/ticket/777](http://hackage.haskell.org/trac/hackage/ticket/777).
|
||||||
|
This means that a build process has been killed, usually because it grew
|
||||||
|
too large. This is common on memory-limited VPS's and with GHC 7.4.1.
|
||||||
|
Look for some memory-hogging processes you can kill, increase your RAM,
|
||||||
|
or limit GHC's heap size by doing `cabal install ... --ghc-options='+RTS
|
||||||
|
-M400m'` (400 megabytes works well on my 1G VPS, adjust up or down..)
|
||||||
|
|
||||||
|
#. <a name="5551" />**Can't load .so/.DLL for: ncursesw (/usr/lib/libncursesw.so: file too short)**
|
||||||
|
(or similar): cf [GHC bug #5551](http://hackage.haskell.org/trac/ghc/ticket/5551).
|
||||||
|
Upgrade GHC to 7.2.1, or try your luck with [this workaround](http://eclipsefp.github.com/faq.html).
|
||||||
|
|
||||||
|
#. <a name="iconv" />**Undefined iconv symbols on OS X**
|
||||||
|
This kind of error:
|
||||||
|
|
||||||
|
Linking dist/build/hledger/hledger ...
|
||||||
|
Undefined symbols:
|
||||||
|
"_iconv_close", referenced from:
|
||||||
|
_hs_iconv_close in libHSbase-4.2.0.2.a(iconv.o)
|
||||||
|
"_iconv", referenced from:
|
||||||
|
_hs_iconv in libHSbase-4.2.0.2.a(iconv.o)
|
||||||
|
"_iconv_open", referenced from:
|
||||||
|
_hs_iconv_open in libHSbase-4.2.0.2.a(iconv.o)
|
||||||
|
|
||||||
|
probably means you are on a mac with macports libraries installed, cf
|
||||||
|
[http://hackage.haskell.org/trac/ghc/ticket/4068](http://hackage.haskell.org/trac/ghc/ticket/4068).
|
||||||
|
To work around temporarily, add this --extra-lib-dirs flag:
|
||||||
|
|
||||||
|
$ cabal install hledger --extra-lib-dirs=/usr/lib
|
||||||
|
|
||||||
|
or permanently, add this to ~/.cabal/config:
|
||||||
|
|
||||||
|
extra-lib-dirs: /usr/lib
|
||||||
|
|
||||||
|
#. **hledger-vty requires curses-related libraries**
|
||||||
|
On Ubuntu, eg, you'll need the `libncurses5-dev` package. On Windows,
|
||||||
|
these are not available (unless perhaps via Cygwin.)
|
||||||
|
|
||||||
|
#. **hledger-chart requires GTK-related libraries**
|
||||||
|
On Ubuntu, eg, install the `libghc6-gtk-dev` package. See also [Gtk2Hs installation notes](http://code.haskell.org/gtk2hs/INSTALL).
|
||||||
|
|
||||||
345
MANUAL.md
345
MANUAL.md
@ -27,52 +27,18 @@ You can use it to, eg:
|
|||||||
- track time and report by day/week/month/project
|
- track time and report by day/week/month/project
|
||||||
- get accurate numbers for client billing and tax filing
|
- get accurate numbers for client billing and tax filing
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
hledger works on linux, mac and windows. You can fund ready-to-run
|
hledger works on linux, mac and windows. You can fund ready-to-run
|
||||||
binaries of the latest release - see the [download page](DOWNLOAD.html).
|
binaries of the latest release - see the [download page](DOWNLOAD.html).
|
||||||
|
Otherwise, fetch and build the latest release from Hackage with cabal-install.
|
||||||
Otherwise, build the latest release from Hackage using cabal-install.
|
Eg:
|
||||||
Ensure you have [GHC](http://hackage.haskell.org/ghc/) 7.0 or greater or
|
|
||||||
the [Haskell Platform](http://hackage.haskell.org/platform/) installed,
|
|
||||||
then:
|
|
||||||
|
|
||||||
$ cabal update
|
$ cabal update
|
||||||
$ cabal install hledger
|
$ cabal install hledger [hledger-web]
|
||||||
|
...
|
||||||
|
$ hledger --version
|
||||||
|
hledger 0.19.4
|
||||||
|
|
||||||
To also install the web interface, do:
|
For more help with this, see the [Installation Guide](INSTALL.html).
|
||||||
|
|
||||||
$ cabal install hledger-web
|
|
||||||
|
|
||||||
Then try it:
|
|
||||||
|
|
||||||
$ hledger
|
|
||||||
|
|
||||||
If you get "hledger not found" or similar, you should add cabal's bin
|
|
||||||
directory to your PATH environment variable. Eg on unix-like systems,
|
|
||||||
something like:
|
|
||||||
|
|
||||||
$ echo 'export PATH=$PATH:~/cabal/bin' >> ~/.bash_profile
|
|
||||||
$ source ~/.bash_profile
|
|
||||||
|
|
||||||
To build the latest [development version](DEVELOPMENT.html) do:
|
|
||||||
|
|
||||||
$ cabal update
|
|
||||||
$ darcs get --lazy http://hub.darcs.net/simon/hledger
|
|
||||||
$ cd hledger
|
|
||||||
$ make install (or do cabal install inside hledger-lib/, hledger/ etc.)
|
|
||||||
|
|
||||||
Some add-on packages are available on Hackage:
|
|
||||||
[hledger-vty](http://hackage.haskell.org/package/hledger-vty),
|
|
||||||
[hledger-chart](http://hackage.haskell.org/package/hledger-chart),
|
|
||||||
[hledger-interest](http://hackage.haskell.org/package/hledger-interest).
|
|
||||||
These are without an active maintainer, and/or platform-specific, so installing them may be harder.
|
|
||||||
|
|
||||||
Note: to use non-ascii characters like £, you might need to [configure a suitable locale](#locale).
|
|
||||||
|
|
||||||
<div class="alert">
|
|
||||||
If you have trouble, see [Troubleshooting](#troubleshooting).
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## Basic Usage
|
## Basic Usage
|
||||||
|
|
||||||
@ -110,7 +76,7 @@ enter some transactions. Or, save this
|
|||||||
$ hledger reg desc:shop # show postings with shop in the description
|
$ hledger reg desc:shop # show postings with shop in the description
|
||||||
$ hledger activity # show transactions per day as a bar chart
|
$ hledger activity # show transactions per day as a bar chart
|
||||||
|
|
||||||
## Reading data
|
## Data formats
|
||||||
|
|
||||||
### Journal files
|
### Journal files
|
||||||
|
|
||||||
@ -605,8 +571,43 @@ and the following kinds of rule can appear in any order:
|
|||||||
|
|
||||||
### Timelog files
|
### Timelog files
|
||||||
|
|
||||||
hledger can also read [timelog files](#timelog-reporting),
|
hledger can also read time log files. These are (a subset of) timeclock.el's
|
||||||
interpreting each logged time session as an expenditure of hours.
|
format, containing clock-in and clock-out entries like so:
|
||||||
|
|
||||||
|
i 2009/03/31 22:21:45 projects:A
|
||||||
|
o 2009/04/01 02:00:34
|
||||||
|
|
||||||
|
hledger treats the clock-in description ("projects:A") as an account name,
|
||||||
|
and creates a virtual transaction (or several - one per day) with the
|
||||||
|
appropriate amount of hours. From the time log above, hledger print gives:
|
||||||
|
|
||||||
|
2009/03/31 * 22:21-23:59
|
||||||
|
(projects:A) 1.6h
|
||||||
|
|
||||||
|
2009/04/01 * 00:00-02:00
|
||||||
|
(projects:A) 2.0h
|
||||||
|
|
||||||
|
Here is a
|
||||||
|
[sample.timelog](http://hub.darcs.net/simon/hledger/data/sample.timelog) to
|
||||||
|
download and some queries to try:
|
||||||
|
|
||||||
|
hledger -f sample.timelog balance # current time balances
|
||||||
|
hledger -f sample.timelog register -p 2009/3 # sessions in march 2009
|
||||||
|
hledger -f sample.timelog register -p weekly --depth 1 --empty # time summary by week
|
||||||
|
|
||||||
|
To generate time logs, ie to clock in and clock out, you could:
|
||||||
|
|
||||||
|
- use emacs and the built-in timeclock.el, or
|
||||||
|
the extended [timeclock-x.el](http://www.emacswiki.org/emacs/timeclock-x.el)
|
||||||
|
and perhaps the extras in [ledgerutils.el](http://hub.darcs.net/simon/ledgertools/ledgerutils.el)
|
||||||
|
|
||||||
|
- at the command line, use these bash aliases:
|
||||||
|
|
||||||
|
alias ti="echo i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG"
|
||||||
|
alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"
|
||||||
|
|
||||||
|
- or use the old `ti` and `to` scripts in the [c++ ledger 2.x repository](https://github.com/jwiegley/ledger/tree/maint/scripts).
|
||||||
|
These rely on a "timeclock" executable which I think is just the ledger 2 executable renamed.
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
@ -1034,46 +1035,6 @@ With the `--depth N` option, reports will show only the uppermost accounts
|
|||||||
in the account tree, down to level N. See the [balance](#balance),
|
in the account tree, down to level N. See the [balance](#balance),
|
||||||
[register](#register) and [chart](#chart) examples.
|
[register](#register) and [chart](#chart) examples.
|
||||||
|
|
||||||
### Timelog reporting
|
|
||||||
|
|
||||||
hledger can also read time log files in (a subset of) timeclock.el's
|
|
||||||
format, containing clock-in and clock-out entries like so:
|
|
||||||
|
|
||||||
i 2009/03/31 22:21:45 projects:A
|
|
||||||
o 2009/04/01 02:00:34
|
|
||||||
|
|
||||||
hledger treats the clock-in description ("projects:A") as an account name,
|
|
||||||
and creates a virtual transaction (or several - one per day) with the
|
|
||||||
appropriate amount of hours. From the time log above, hledger print gives:
|
|
||||||
|
|
||||||
2009/03/31 * 22:21-23:59
|
|
||||||
(projects:A) 1.6h
|
|
||||||
|
|
||||||
2009/04/01 * 00:00-02:00
|
|
||||||
(projects:A) 2.0h
|
|
||||||
|
|
||||||
Here is a
|
|
||||||
[sample.timelog](http://hub.darcs.net/simon/hledger/data/sample.timelog) to
|
|
||||||
download and some queries to try:
|
|
||||||
|
|
||||||
hledger -f sample.timelog balance # current time balances
|
|
||||||
hledger -f sample.timelog register -p 2009/3 # sessions in march 2009
|
|
||||||
hledger -f sample.timelog register -p weekly --depth 1 --empty # time summary by week
|
|
||||||
|
|
||||||
To generate time logs, ie to clock in and clock out, you could:
|
|
||||||
|
|
||||||
- use emacs and the built-in timeclock.el, or
|
|
||||||
the extended [timeclock-x.el](http://www.emacswiki.org/emacs/timeclock-x.el)
|
|
||||||
and perhaps the extras in [ledgerutils.el](http://hub.darcs.net/simon/ledgertools/ledgerutils.el)
|
|
||||||
|
|
||||||
- at the command line, use these bash aliases:
|
|
||||||
|
|
||||||
alias ti="echo i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG"
|
|
||||||
alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"
|
|
||||||
|
|
||||||
- or use the old `ti` and `to` scripts in the [c++ ledger 2.x repository](https://github.com/jwiegley/ledger/tree/maint/scripts).
|
|
||||||
These rely on a "timeclock" executable which I think is just the ledger 2 executable renamed.
|
|
||||||
|
|
||||||
### Custom output formats
|
### Custom output formats
|
||||||
|
|
||||||
The `--format FMT` option will customize the line format of the balance
|
The `--format FMT` option will customize the line format of the balance
|
||||||
@ -1142,6 +1103,62 @@ The default output format is `%20(total) %2(depth_spacer)%-(account)`
|
|||||||
|
|
||||||
## Appendices
|
## Appendices
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
Here are some issues you might encounter when you run hledger:
|
||||||
|
Please also seek
|
||||||
|
[support](DEVELOPMENT.html#support) from the
|
||||||
|
[IRC channel](irc://irc.freenode.net/#ledger),
|
||||||
|
[mail list](http://list.hledger.org) or
|
||||||
|
[bug tracker](http://bugs.hledger.org).
|
||||||
|
|
||||||
|
#. **hledger installed, but running hledger says something like No command 'hledger' found**
|
||||||
|
cabal installs binaries into a special directory, which should be added
|
||||||
|
to your PATH environment variable. On unix-like systems, it is
|
||||||
|
~/.cabal/bin.
|
||||||
|
|
||||||
|
#. **hledger fails to parse some valid ledger files**
|
||||||
|
See [file format compatibility](#file-format-compatibility).
|
||||||
|
|
||||||
|
#. <a name="locale" />**hledger gives "Illegal byte sequence" or "Invalid or incomplete multibyte or wide character" errors**
|
||||||
|
In order to handle non-ascii letters and symbols (like £), hledger needs
|
||||||
|
an appropriate locale. This is usually configured system-wide; you can
|
||||||
|
also configure it temporarily. The locale may need to be one that
|
||||||
|
supports UTF-8, if you built hledger with GHC < 7.2 (or possibly always,
|
||||||
|
I'm not sure yet).
|
||||||
|
|
||||||
|
Here's an example of setting the locale temporarily, on ubuntu gnu/linux:
|
||||||
|
|
||||||
|
$ file my.journal
|
||||||
|
my.journal: UTF-8 Unicode text # <- the file is UTF8-encoded
|
||||||
|
$ locale -a
|
||||||
|
C
|
||||||
|
en_US.utf8 # <- a UTF8-aware locale is available
|
||||||
|
POSIX
|
||||||
|
$ LANG=en_US.utf8 hledger -f my.journal print # <- use it for this command
|
||||||
|
|
||||||
|
Here's one way to set it permanently, there are probably better ways:
|
||||||
|
|
||||||
|
$ echo "export LANG=en_US.UTF-8" >>~/.bash_profile
|
||||||
|
$ bash --login
|
||||||
|
|
||||||
|
If we preferred to use eg `fr_FR.utf8`, we might have to install that first:
|
||||||
|
|
||||||
|
$ apt-get install language-pack-fr
|
||||||
|
$ locale -a
|
||||||
|
C
|
||||||
|
en_US.utf8
|
||||||
|
fr_BE.utf8
|
||||||
|
fr_CA.utf8
|
||||||
|
fr_CH.utf8
|
||||||
|
fr_FR.utf8
|
||||||
|
fr_LU.utf8
|
||||||
|
POSIX
|
||||||
|
$ LANG=fr_FR.utf8 hledger -f my.journal print
|
||||||
|
|
||||||
|
Note some platforms allow variant locale spellings, but not all (ubuntu
|
||||||
|
accepts `fr_FR.UTF8`, mac osx requires exactly `fr_FR.UTF-8`).
|
||||||
|
|
||||||
### Compatibility with c++ ledger
|
### Compatibility with c++ ledger
|
||||||
|
|
||||||
hledger mimics a subset of ledger 3.x, and adds some features of its own.
|
hledger mimics a subset of ledger 3.x, and adds some features of its own.
|
||||||
@ -1260,7 +1277,7 @@ entries, and the following c++ ledger options and commands:
|
|||||||
prices [REGEXP]... display price history for matching commodities
|
prices [REGEXP]... display price history for matching commodities
|
||||||
entry DATE PAYEE AMT output a derived entry, based on the arguments
|
entry DATE PAYEE AMT output a derived entry, based on the arguments
|
||||||
|
|
||||||
#### Other differences
|
#### Functionality differences
|
||||||
|
|
||||||
- hledger recognises description and negative patterns by "desc:"
|
- hledger recognises description and negative patterns by "desc:"
|
||||||
and "not:" prefixes, unlike ledger 3's free-form parser
|
and "not:" prefixes, unlike ledger 3's free-form parser
|
||||||
@ -1302,164 +1319,6 @@ entries, and the following c++ ledger options and commands:
|
|||||||
- hledger's [include directive](including-other-files) does not support
|
- hledger's [include directive](including-other-files) does not support
|
||||||
shell glob patterns (eg `include *.journal` ), which ledger does.
|
shell glob patterns (eg `include *.journal` ), which ledger does.
|
||||||
|
|
||||||
### Troubleshooting
|
|
||||||
|
|
||||||
Sorry you're here! There are a lot of ways things can go wrong. Here are
|
|
||||||
some known issues and things to try. Please also seek
|
|
||||||
[support](DEVELOPMENT.html#support) from the
|
|
||||||
[IRC channel](irc://irc.freenode.net/#ledger),
|
|
||||||
[mail list](http://list.hledger.org) or
|
|
||||||
[bug tracker](http://bugs.hledger.org).
|
|
||||||
|
|
||||||
#### Installation issues
|
|
||||||
|
|
||||||
Starting from the top, consider whether each of these might apply to
|
|
||||||
you. Tip: blindly reinstalling/upgrading everything in sight probably
|
|
||||||
won't work, it's better to go in small steps and understand the problem,
|
|
||||||
or get help.
|
|
||||||
|
|
||||||
#. **Running hledger says something like No command 'hledger' found**
|
|
||||||
cabal installs binaries into a special directory, which should be added
|
|
||||||
to your PATH environment variable. On unix-like systems, it is
|
|
||||||
~/.cabal/bin.
|
|
||||||
|
|
||||||
#. **Did you cabal update ?**
|
|
||||||
If not, `cabal update` and try again.
|
|
||||||
|
|
||||||
#. **Do you have a new enough version of GHC ?**
|
|
||||||
Run `ghc --version`. hledger requires GHC 7.0 or greater
|
|
||||||
(on [some platforms](#5551), 7.2.1 can be helpful).
|
|
||||||
|
|
||||||
#. **Do you have a new enough version of cabal ?**
|
|
||||||
Avoid ancient versions. `cabal --version` should report at least
|
|
||||||
0.10 (and 0.14 is much better). You may be able to upgrade it with:
|
|
||||||
|
|
||||||
$ cabal update
|
|
||||||
$ cabal install cabal-install-0.14
|
|
||||||
|
|
||||||
#. **Are your installed GHC/cabal packages in good repair ?**
|
|
||||||
Run `ghc-pkg check`. If it reports problems, some of your packages have
|
|
||||||
become inconsistent, and you should fix these first.
|
|
||||||
[ghc-pkg-clean](https://gist.github.com/1185421) is an easy way.
|
|
||||||
|
|
||||||
#. <a name="cabaldeps" />**cabal can't satisfy the new dependencies due to old installed packages**
|
|
||||||
Cabal dependency failures become more likely as you install more
|
|
||||||
packages over time. If `cabal install hledger-web --dry` says it can't
|
|
||||||
satisfy dependencies, you have this problem. You can:
|
|
||||||
|
|
||||||
a. try to understand which packages to remove (with `ghc-pkg unregister`)
|
|
||||||
or which constraints to add (with `--constraint 'PKG == ...'`) to help cabal
|
|
||||||
find a solution
|
|
||||||
|
|
||||||
b. install into a fresh environment created with
|
|
||||||
[virthualenv](http://hackage.haskell.org/package/virthualenv) or
|
|
||||||
[cabal-dev](http://hackage.haskell.org/package/cabal-dev)
|
|
||||||
|
|
||||||
c. or (easiest) erase your installed packages with
|
|
||||||
[ghc-pkg-reset](https://gist.github.com/1185421) and try again.
|
|
||||||
|
|
||||||
#. **Dependency or compilation error in one of the new packages ?**
|
|
||||||
If cabal starts downloading and building packages and then terminates
|
|
||||||
with an error, look at the output carefully and identify the problem
|
|
||||||
package(s). If necessary, add `-v2` or `-v3` for more verbose
|
|
||||||
output. You can install the new packages one at a time to troubleshoot,
|
|
||||||
but remember cabal is smarter when installing all packages at once.
|
|
||||||
|
|
||||||
Often the problem is that you need to install a particular C library
|
|
||||||
using your platform's package management system. Or the dependencies
|
|
||||||
specified on a package may need updating. Or there may be a compilation
|
|
||||||
error. If you find an error in a hledger package, check the
|
|
||||||
[recent commits](http://hub.darcs.net/simon/hledger/changes) to
|
|
||||||
see if the [latest development version](#installing) might have a fix.
|
|
||||||
|
|
||||||
#. **ExitFailure 11**
|
|
||||||
See
|
|
||||||
[http://hackage.haskell.org/trac/hackage/ticket/777](http://hackage.haskell.org/trac/hackage/ticket/777).
|
|
||||||
This means that a build process has been killed, usually because it grew
|
|
||||||
too large. This is common on memory-limited VPS's and with GHC 7.4.1.
|
|
||||||
Look for some memory-hogging processes you can kill, increase your RAM,
|
|
||||||
or limit GHC's heap size by doing `cabal install ... --ghc-options='+RTS
|
|
||||||
-M400m'` (400 megabytes works well on my 1G VPS, adjust up or down..)
|
|
||||||
|
|
||||||
#. <a name="5551" />**Can't load .so/.DLL for: ncursesw (/usr/lib/libncursesw.so: file too short)**
|
|
||||||
(or similar): cf [GHC bug #5551](http://hackage.haskell.org/trac/ghc/ticket/5551).
|
|
||||||
Upgrade GHC to 7.2.1, or try your luck with [this workaround](http://eclipsefp.github.com/faq.html).
|
|
||||||
|
|
||||||
#. <a name="iconv" />**Undefined iconv symbols on OS X**
|
|
||||||
This kind of error:
|
|
||||||
|
|
||||||
Linking dist/build/hledger/hledger ...
|
|
||||||
Undefined symbols:
|
|
||||||
"_iconv_close", referenced from:
|
|
||||||
_hs_iconv_close in libHSbase-4.2.0.2.a(iconv.o)
|
|
||||||
"_iconv", referenced from:
|
|
||||||
_hs_iconv in libHSbase-4.2.0.2.a(iconv.o)
|
|
||||||
"_iconv_open", referenced from:
|
|
||||||
_hs_iconv_open in libHSbase-4.2.0.2.a(iconv.o)
|
|
||||||
|
|
||||||
probably means you are on a mac with macports libraries installed, cf
|
|
||||||
[http://hackage.haskell.org/trac/ghc/ticket/4068](http://hackage.haskell.org/trac/ghc/ticket/4068).
|
|
||||||
To work around temporarily, add this --extra-lib-dirs flag:
|
|
||||||
|
|
||||||
$ cabal install hledger --extra-lib-dirs=/usr/lib
|
|
||||||
|
|
||||||
or permanently, add this to ~/.cabal/config:
|
|
||||||
|
|
||||||
extra-lib-dirs: /usr/lib
|
|
||||||
|
|
||||||
#. **hledger-vty requires curses-related libraries**
|
|
||||||
On Ubuntu, eg, you'll need the `libncurses5-dev` package. On Windows,
|
|
||||||
these are not available (unless perhaps via Cygwin.)
|
|
||||||
|
|
||||||
#. **hledger-chart requires GTK-related libraries**
|
|
||||||
On Ubuntu, eg, install the `libghc6-gtk-dev` package. See also [Gtk2Hs installation notes](http://code.haskell.org/gtk2hs/INSTALL).
|
|
||||||
|
|
||||||
#### Usage issues
|
|
||||||
|
|
||||||
Here are some issues you might encounter when you run hledger:
|
|
||||||
|
|
||||||
12. **hledger fails to parse some valid ledger files**
|
|
||||||
See [file format compatibility](#file-format-compatibility).
|
|
||||||
|
|
||||||
#. <a name="locale" />**hledger gives "Illegal byte sequence" or "Invalid or incomplete multibyte or wide character" errors**
|
|
||||||
In order to handle non-ascii letters and symbols (like £), hledger needs
|
|
||||||
an appropriate locale. This is usually configured system-wide; you can
|
|
||||||
also configure it temporarily. The locale may need to be one that
|
|
||||||
supports UTF-8, if you built hledger with GHC < 7.2 (or possibly always,
|
|
||||||
I'm not sure yet).
|
|
||||||
|
|
||||||
Here's an example of setting the locale temporarily, on ubuntu gnu/linux:
|
|
||||||
|
|
||||||
$ file my.journal
|
|
||||||
my.journal: UTF-8 Unicode text # <- the file is UTF8-encoded
|
|
||||||
$ locale -a
|
|
||||||
C
|
|
||||||
en_US.utf8 # <- a UTF8-aware locale is available
|
|
||||||
POSIX
|
|
||||||
$ LANG=en_US.utf8 hledger -f my.journal print # <- use it for this command
|
|
||||||
|
|
||||||
Here's one way to set it permanently, there are probably better ways:
|
|
||||||
|
|
||||||
$ echo "export LANG=en_US.UTF-8" >>~/.bash_profile
|
|
||||||
$ bash --login
|
|
||||||
|
|
||||||
If we preferred to use eg `fr_FR.utf8`, we might have to install that first:
|
|
||||||
|
|
||||||
$ apt-get install language-pack-fr
|
|
||||||
$ locale -a
|
|
||||||
C
|
|
||||||
en_US.utf8
|
|
||||||
fr_BE.utf8
|
|
||||||
fr_CA.utf8
|
|
||||||
fr_CH.utf8
|
|
||||||
fr_FR.utf8
|
|
||||||
fr_LU.utf8
|
|
||||||
POSIX
|
|
||||||
$ LANG=fr_FR.utf8 hledger -f my.journal print
|
|
||||||
|
|
||||||
Note some platforms allow variant locale spellings, but not all (ubuntu
|
|
||||||
accepts `fr_FR.UTF8`, mac osx requires exactly `fr_FR.UTF-8`).
|
|
||||||
|
|
||||||
### Examples and recipes
|
### Examples and recipes
|
||||||
|
|
||||||
- Here's a bash function that will run hledger chart and display
|
- Here's a bash function that will run hledger chart and display
|
||||||
|
|||||||
@ -20,7 +20,7 @@ suited to techies. I use it every day to:
|
|||||||
- track invoices
|
- track invoices
|
||||||
|
|
||||||
hledger is first a command-line tool, but also provides a web interface
|
hledger is first a command-line tool, but also provides a web interface
|
||||||
(try the [demo](http://demo.hledger.org)). Read the [manual](MANUAL.html) to
|
(try the [demo](http://demo.hledger.org)). Read the [docs](DOCS.html) to
|
||||||
learn more, including
|
learn more, including
|
||||||
[how we are different from ledger](FAQ.html#how-does-hledger-relate-to-ledger),
|
[how we are different from ledger](FAQ.html#how-does-hledger-relate-to-ledger),
|
||||||
and get started tracking your numbers!
|
and get started tracking your numbers!
|
||||||
|
|||||||
10
site/DOCS.md
10
site/DOCS.md
@ -4,19 +4,21 @@ title: hledger docs
|
|||||||
|
|
||||||
# Docs
|
# Docs
|
||||||
|
|
||||||
Latest:
|
**Latest:**
|
||||||
|
|
||||||
[Release Notes](NEWS.html)
|
[Release Notes](NEWS.html)
|
||||||
|
|
||||||
|
[Installation Guide](INSTALL.html)
|
||||||
|
|
||||||
[User Manual](MANUAL.html)
|
[User Manual](MANUAL.html)
|
||||||
|
|
||||||
[Contributor Guide](DEVELOPMENT.html)
|
[Contributor Guide](DEVELOPMENT.html)
|
||||||
|
|
||||||
[FAQ](FAQ.html)
|
[FAQ](FAQ.html)
|
||||||
|
|
||||||
For past releases:
|
**Past releases:**
|
||||||
|
|
||||||
[0.19 User Manual](0.19/MANUAL.html)
|
[0.19.x User Manual](0.19/MANUAL.html)
|
||||||
|
|
||||||
[0.18 User Manual](0.18/MANUAL.html)
|
[0.18.x User Manual](0.18/MANUAL.html)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user