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). | ||||||
|  | 
 | ||||||
							
								
								
									
										347
									
								
								MANUAL.md
									
									
									
									
									
								
							
							
						
						
									
										347
									
								
								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] | ||||||
| 
 |     ... | ||||||
| To also install the web interface, do: |     $ hledger --version | ||||||
| 
 |     hledger 0.19.4 | ||||||
|     $ cabal install hledger-web |      | ||||||
| 
 | For more help with this, see the [Installation Guide](INSTALL.html). | ||||||
| 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