Cabal on NFS
Note to myself, like most other things in this site:
Suppose your home directory is on NFS or some such. Now suppose
you're sharing your
~/.cabal files with several machines across the
network. Some of them are
x86, some are
x86\_64, etc. All of
them are running the same version of RHEL or some such.
When this is the case, and when you hop from terminal to terminal,
Cabal won't be happy with the default configuration; and your finely
tuned XMonad will break. You certainly don't want to nuke your
~/.ghc and rebuild everything every time you use a
I asked the friendly folks in #haskell (this was a while ago, so
memory lapses are all mine), and was pleased to learn that there is
indeed a solution to this particular nerd-world problem: change the
~/.cabal/config slightly, like so:
install-dirs user prefix: /home/sajith/.cabal/$arch bindir: $prefix/bin libdir: $prefix/lib libsubdir: $pkgid/$compiler libexecdir: $prefix/libexec datadir: $prefix/share datasubdir: $pkgid docdir: $datadir/doc/$pkgid htmldir: $docdir/html haddockdir: $htmldir
prefix does the trick. I suppose you can also use
$compiler if you're the kind of person that runs twelve
different versions of GHC on your Amiga-based NetBSD Beowulf cluster.
If you want to find these variables quickly, do a
cabal help install
or see Cabal docs.
If you use a non-hipster shell, adding this to
~/.profile might be
if [ -d $HOME/.cabal/$(uname -m)/bin ]; then PATH=$HOME/.cabal/$(uname -m)/bin:$PATH fi export PATH
(On Debian, "
uname -i" and "
uname -p" prints "
uname documentation, "the kernel does not make this
information easily available, as is the case with Linux kernels". Hey
Linux kernel on Debian, behave yourself.)