Setting up Haskell (and Pandoc)
Finally, You’ll need a source distribution of Haskell, so that You can compile it from source.
Here are some links for the most up-to-date versions of the above (for GNU/Linux, as that is what I use. If You use Windows or OS/X, please see the main Haskell-Platform website.
- The first step is to install the binary distribution. I followed
the Slackwiki’s instructions to create a package which
I could easily remove later. I then installed it, using
- Next, You need to put the cabal-install program (which is actually
cabal) somewhere in Your path. I have a directory
~/bins/bin/where I put all binaries I use on a general basis, that I don’t need to be installed system wide. Setting that up will probably be the topic of another post, which (if and when it is written) I will link to here.
- Now that Your build environment is set up, You can extract the
haskell-platformfile into a new directory, cd into it, and run the following command:
./platform.sh <Bindist Tarball>. Replace ‘
‘ with the path to Your previously downloaded binary distribution tarball. For instance, I use an x86 distro, and so mine was:
- When that command finishes (it takes a while), You’ll have a new
tarball in the
./build/product/directory. As a good sysadmin, You should take the time to untar it into its own directory, add a slack-desc, and package it up. Then, remove the binary distribution package, and take
cabalout of Your path.
- Now, simply run (as root):
installpkg haskell_platform.txz. Once it installs, the last bit of set up is to run the following program:
Congratulations, Haskell is installed.
To take Your newly installed Haskell and install pandoc, it is really
as simple as:
cabal install pandoc. Once that finishes, You will
have pandoc fully available to You.
But, as others have said, Cabal is not a Package Manager. Upgrading Pandoc will not be elegant, and uninstalling it will have to be manual, as cabal-install does not handle either of those two things well (or at all, really).
I digress, though. That is for another post.