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
|
||||
- get accurate numbers for client billing and tax filing
|
||||
|
||||
## Installing
|
||||
|
||||
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:
|
||||
Otherwise, fetch and build the latest release from Hackage with cabal-install.
|
||||
Eg:
|
||||
|
||||
$ cabal update
|
||||
$ cabal install hledger
|
||||
$ cabal install hledger [hledger-web]
|
||||
...
|
||||
$ hledger --version
|
||||
hledger 0.19.4
|
||||
|
||||
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](#locale).
|
||||
|
||||
<div class="alert">
|
||||
If you have trouble, see [Troubleshooting](#troubleshooting).
|
||||
</div>
|
||||
For more help with this, see the [Installation Guide](INSTALL.html).
|
||||
|
||||
## Basic Usage
|
||||
|
||||
@ -110,7 +76,7 @@ enter some transactions. Or, save this
|
||||
$ hledger reg desc:shop # show postings with shop in the description
|
||||
$ hledger activity # show transactions per day as a bar chart
|
||||
|
||||
## Reading data
|
||||
## Data formats
|
||||
|
||||
### Journal files
|
||||
|
||||
@ -605,8 +571,43 @@ and the following kinds of rule can appear in any order:
|
||||
|
||||
### Timelog files
|
||||
|
||||
hledger can also read [timelog files](#timelog-reporting),
|
||||
interpreting each logged time session as an expenditure of hours.
|
||||
hledger can also read time log files. These are (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.
|
||||
|
||||
## 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),
|
||||
[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
|
||||
|
||||
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
|
||||
|
||||
### 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
|
||||
|
||||
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
|
||||
entry DATE PAYEE AMT output a derived entry, based on the arguments
|
||||
|
||||
#### Other differences
|
||||
#### Functionality differences
|
||||
|
||||
- hledger recognises description and negative patterns by "desc:"
|
||||
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
|
||||
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
|
||||
|
||||
- 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
|
||||
|
||||
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
|
||||
[how we are different from ledger](FAQ.html#how-does-hledger-relate-to-ledger),
|
||||
and get started tracking your numbers!
|
||||
|
||||
10
site/DOCS.md
10
site/DOCS.md
@ -4,19 +4,21 @@ title: hledger docs
|
||||
|
||||
# Docs
|
||||
|
||||
Latest:
|
||||
**Latest:**
|
||||
|
||||
[Release Notes](NEWS.html)
|
||||
|
||||
[Installation Guide](INSTALL.html)
|
||||
|
||||
[User Manual](MANUAL.html)
|
||||
|
||||
[Contributor Guide](DEVELOPMENT.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