docs: extract and clean up troubleshooting section
This commit is contained in:
parent
bbcba1a71d
commit
b0ae879de1
239
MANUAL.markdown
239
MANUAL.markdown
@ -80,121 +80,7 @@ with the cabal-install tool:
|
|||||||
need to install yourself as it's not yet provided by the haskell
|
need to install yourself as it's not yet provided by the haskell
|
||||||
platform or cabal.
|
platform or cabal.
|
||||||
|
|
||||||
#### Installation troubleshooting
|
If you have any trouble, proceed at once to [Troubleshooting](#troubleshooting) for help!
|
||||||
|
|
||||||
cabal builds a lot of fast-evolving software, and it's not always smooth
|
|
||||||
sailing. Here are some known issues and things to try:
|
|
||||||
|
|
||||||
- **Ask for help on [#hledger](irc://freenode.net/#hledger) or [#haskell](irc://freenode.net/#haskell)**
|
|
||||||
|
|
||||||
- **cabal update.** If you didn't already, ``cabal update`` and try again.
|
|
||||||
|
|
||||||
- **Do you have a new enough version of GHC ?** As of 2010, 6.10 and 6.12
|
|
||||||
are supported, 6.8 might or might not work.
|
|
||||||
|
|
||||||
- **Do you have a new enough version of cabal-install ?**
|
|
||||||
Newer versions tend to be better at resolving problems. 0.6.2 has been
|
|
||||||
known to fail where newer versions succeed.
|
|
||||||
|
|
||||||
- **Could not run trhsx.**
|
|
||||||
You are installing with `-fweb`, which needs to run the ``trhsx`` executable.
|
|
||||||
It is installed by the hsx package in ~/.cabal/bin, which needs to be in
|
|
||||||
your path.
|
|
||||||
|
|
||||||
- **Installation fails due to problems with a hledger package.**
|
|
||||||
The current hledger release might have a coding error, or dependency
|
|
||||||
error. You could try installing the
|
|
||||||
[previous version](http://hackage.haskell.org/package/hledger):
|
|
||||||
|
|
||||||
cabal install hledger-0.x
|
|
||||||
|
|
||||||
or (preferably) the latest development version: install
|
|
||||||
[darcs](http://darcs.net) and then:
|
|
||||||
|
|
||||||
darcs get --lazy http://joyful.com/repos/hledger
|
|
||||||
cd hledger/hledger-lib
|
|
||||||
cabal install
|
|
||||||
cd ..
|
|
||||||
cabal install [-f...]
|
|
||||||
|
|
||||||
- **Installation fails due to problems with other packages.**
|
|
||||||
Resolve the problem packages one at a time. Eg, cabal install pkg1.
|
|
||||||
Look for the cause of the failure near the end of the output. If it's
|
|
||||||
not apparent, try again with `-v2` or `-v3` for more verbose output.
|
|
||||||
|
|
||||||
- **Could not run happy.**
|
|
||||||
A package (eg haskell-src-exts) needs to run the ``happy`` executable.
|
|
||||||
If not using the haskell platform, install the appropriate platform
|
|
||||||
package which provides it (eg apt-get install happy).
|
|
||||||
|
|
||||||
- **GHC panic while installing** might be due to
|
|
||||||
[http://hackage.haskell.org/trac/ghc/ticket/3862](http://hackage.haskell.org/trac/ghc/ticket/3862)
|
|
||||||
|
|
||||||
- **cabal could not reconcile dependencies**
|
|
||||||
In some cases, especially if you have installed/updated many cabal
|
|
||||||
package versions or GHC itself, cabal may not be able to reconcile the
|
|
||||||
package dependencies. You can sometimes work around this by using
|
|
||||||
cabal's `--constraint` option. Another way is to purge all unnecessary
|
|
||||||
package versions by removing (or renaming) ~/.ghc, then trying cabal
|
|
||||||
install again. Also remember that `-fwebyesod` requires GHC 6.12 or greater.
|
|
||||||
|
|
||||||
- <a name="locale" />**hledger: ... hGetContents: invalid argument (Illegal byte sequence)**
|
|
||||||
You may get this error when running hledger built with GHC 6.12 on a
|
|
||||||
mac, when the locale is unset (check it at the terminal prompt):
|
|
||||||
|
|
||||||
$ locale
|
|
||||||
LANG=
|
|
||||||
LC_COLLATE="C"
|
|
||||||
LC_CTYPE="C"
|
|
||||||
LC_MESSAGES="C"
|
|
||||||
LC_MONETARY="C"
|
|
||||||
LC_NUMERIC="C"
|
|
||||||
LC_TIME="C"
|
|
||||||
LC_ALL=
|
|
||||||
|
|
||||||
and there is non-ascii text in your journal file:
|
|
||||||
|
|
||||||
$ file my.journal
|
|
||||||
.../.journal: UTF-8 Unicode C++ program text
|
|
||||||
|
|
||||||
In this case you need to set the `LANG` environment variable to a
|
|
||||||
locale suitable for the encoding shown (almost certainly UTF-8). You
|
|
||||||
can set it every time you run hledger:
|
|
||||||
|
|
||||||
$ LANG=en_US.UTF-8 hledger ...
|
|
||||||
|
|
||||||
or configure it permanently:
|
|
||||||
|
|
||||||
$ echo "export LANG=en_US.UTF-8" >>~/.bash_profile
|
|
||||||
$ bash --login
|
|
||||||
|
|
||||||
- <a name="iconv" />**Undefined symbols: ... _iconv ...**
|
|
||||||
If cabal gives this 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)
|
|
||||||
|
|
||||||
you are probably on a mac with macports libraries installed:
|
|
||||||
[http://hackage.haskell.org/trac/ghc/ticket/4068](http://hackage.haskell.org/trac/ghc/ticket/4068).
|
|
||||||
To work around, add this --extra-lib-dirs flag:
|
|
||||||
|
|
||||||
$ cabal install hledger --extra-lib-dirs=/usr/lib
|
|
||||||
|
|
||||||
- **setup: failed to parse output of 'ghc-pkg dump'**
|
|
||||||
This probably means
|
|
||||||
[you need a newer version of cabal-install](http://stackoverflow.com/questions/1908333/getting-cabal-to-work-with-ghc-6-12-1).
|
|
||||||
Do eg:
|
|
||||||
|
|
||||||
$ cabal update
|
|
||||||
$ cabal install cabal-install
|
|
||||||
|
|
||||||
then try installing hledger again.
|
|
||||||
|
|
||||||
### Basic usage
|
### Basic usage
|
||||||
|
|
||||||
@ -984,3 +870,126 @@ entries, and the following c++ ledger options and commands:
|
|||||||
|
|
||||||
$ chart food --depth 2 -p jan
|
$ chart food --depth 2 -p jan
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
#### Installation issues
|
||||||
|
|
||||||
|
cabal builds a lot of fast-evolving software, and it's not always smooth
|
||||||
|
sailing. Here are some known issues and things to try:
|
||||||
|
|
||||||
|
- **Ask for help on [#hledger](irc://freenode.net/#hledger) or [#haskell](irc://freenode.net/#haskell).**
|
||||||
|
Eg: join the #hledger channel with your IRC client and type: "sm: I did ... and ... happened", then leave
|
||||||
|
that window open until you get helped.
|
||||||
|
|
||||||
|
- **Did you cabal update ?** If you didn't already, ``cabal update`` and try again.
|
||||||
|
|
||||||
|
- **Do you have a new enough version of GHC ?** As of 2010, 6.10 and 6.12
|
||||||
|
are supported, 6.8 might or might not work.
|
||||||
|
|
||||||
|
- **Do you have a new enough version of cabal-install ?**
|
||||||
|
Recent versions tend to be better at resolving dependencies. The error
|
||||||
|
`setup: failed to parse output of 'ghc-pkg dump'` is another symptom of
|
||||||
|
this. To update, do:
|
||||||
|
|
||||||
|
$ cabal update
|
||||||
|
$ cabal install cabal-install
|
||||||
|
|
||||||
|
then try installing hledger again.
|
||||||
|
|
||||||
|
- **Could not run trhsx.**
|
||||||
|
You are installing with `-fweb`, which needs to run the ``trhsx`` executable.
|
||||||
|
It is installed by the hsx package in ~/.cabal/bin, which needs to be in
|
||||||
|
your path.
|
||||||
|
|
||||||
|
- **Could not run happy.**
|
||||||
|
A package (eg haskell-src-exts) needs to run the ``happy`` executable.
|
||||||
|
If not using the haskell platform, install the appropriate platform
|
||||||
|
package which provides it (eg apt-get install happy).
|
||||||
|
|
||||||
|
- <a name="iconv" />**Undefined symbols: ... _iconv ...**
|
||||||
|
If cabal gives this 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)
|
||||||
|
|
||||||
|
you are probably on a mac with macports libraries installed, causing
|
||||||
|
[this issue](http://hackage.haskell.org/trac/ghc/ticket/4068).
|
||||||
|
To work around, add this --extra-lib-dirs flag:
|
||||||
|
|
||||||
|
$ cabal install hledger --extra-lib-dirs=/usr/lib
|
||||||
|
|
||||||
|
- **A ghc: panic! (the 'impossible' happened)** might be
|
||||||
|
[this issue](http://hackage.haskell.org/trac/ghc/ticket/3862)
|
||||||
|
|
||||||
|
- **Another error while building a hledger package.**
|
||||||
|
The current hledger release might have a coding error, or dependency
|
||||||
|
error. You could try installing the
|
||||||
|
[previous version](http://hackage.haskell.org/package/hledger):
|
||||||
|
|
||||||
|
cabal install hledger-0.x
|
||||||
|
|
||||||
|
or (preferably) the latest development version: install
|
||||||
|
[darcs](http://darcs.net) and then:
|
||||||
|
|
||||||
|
darcs get --lazy http://joyful.com/repos/hledger
|
||||||
|
cd hledger/hledger-lib
|
||||||
|
cabal install
|
||||||
|
cd ..
|
||||||
|
cabal install [-f...]
|
||||||
|
|
||||||
|
- **An error while building non-hledger packages.**
|
||||||
|
Resolve these problem packages one at a time. Eg, cabal install pkg1.
|
||||||
|
Look for the cause of the failure near the end of the output. If it's
|
||||||
|
not apparent, try again with `-v2` or `-v3` for more verbose output.
|
||||||
|
|
||||||
|
- **cabal fails to reconcile dependencies.**
|
||||||
|
This could be related to your GHC version: hledger requires at least GHC
|
||||||
|
6.10 and `-fwebyesod` requires 6.12 or greater.
|
||||||
|
|
||||||
|
Also, it's possible for cabal to get confused, eg if you have
|
||||||
|
installed/updated many cabal package versions or GHC itself. You can
|
||||||
|
sometimes work around this by using cabal install's `--constraint`
|
||||||
|
option. Another (drastic) way is to purge all unnecessary package
|
||||||
|
versions by removing (or renaming) ~/.ghc, then trying cabal install
|
||||||
|
again.
|
||||||
|
|
||||||
|
#### Usage issues
|
||||||
|
|
||||||
|
Here are some issues you might encounter when you run hledger:
|
||||||
|
|
||||||
|
- <a name="locale" />**hledger: ... hGetContents: invalid argument (Illegal byte sequence)**
|
||||||
|
You may get this error when running hledger built with GHC 6.12 on a
|
||||||
|
machine using the default C locale, eg a mac:
|
||||||
|
|
||||||
|
$ locale
|
||||||
|
LANG=
|
||||||
|
LC_COLLATE="C"
|
||||||
|
LC_CTYPE="C"
|
||||||
|
LC_MESSAGES="C"
|
||||||
|
LC_MONETARY="C"
|
||||||
|
LC_NUMERIC="C"
|
||||||
|
LC_TIME="C"
|
||||||
|
LC_ALL=
|
||||||
|
|
||||||
|
if there is non-ascii text in your journal file:
|
||||||
|
|
||||||
|
$ file my.journal
|
||||||
|
.../.journal: UTF-8 Unicode C++ program text
|
||||||
|
|
||||||
|
In this case you need to set the `LANG` environment variable to a
|
||||||
|
locale suitable for the encoding shown (probably UTF-8). You
|
||||||
|
can set it temporarily when you run hledger:
|
||||||
|
|
||||||
|
$ LANG=en_US.UTF-8 hledger ...
|
||||||
|
|
||||||
|
or permanently:
|
||||||
|
|
||||||
|
$ echo "export LANG=en_US.UTF-8" >>~/.bash_profile
|
||||||
|
$ bash --login
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user