% Installing pandoc

Installing from Source
======================

This method will work on all architectures, but requires that you first
install the GHC compiler and some build tools: [GNU `make`], `sed`,
`bash`, and `perl`. These are standard on unix systems (including MacOS
X). If you're using Windows, you can install [Cygwin].

[Cygwin]: http://www.cygwin.com/
[GNU `make`]: http://www.gnu.org/software/make/

Installing GHC
--------------

To compile Pandoc, you'll need [GHC] version 6.6 or greater.  If
you don't have GHC already, you can get it from the [GHC Download]
page. If you're running MacOS X, you can also install GHC using
[MacPorts] or [Fink].

[GHC]: http://www.haskell.org/ghc/
[GHC Download]: http://www.haskell.org/ghc/download.html
[MacPorts]: http://macports.org
[Fink]: http://finkproject.org

Getting the source
------------------

Download the source tarball from pandoc's [pandoc's google code site].
Extract the contents into a subdirectory:

    tar xvzf pandoc-0.xy.tar.gz

[pandoc's google code site]: http://pandoc.googlecode.com

Installing Pandoc
-----------------

1.  Change to the directory containing the Pandoc distribution.

2.  Compile:

        make

    If you get "Unknown modifier" errors, it is probably because `make`
    on your system is not [GNU `make`].  Try using `gmake` instead.

3.  See if it worked (optional, but recommended): 

        make test

    Note: if you see errors like the following, they're due to differences
    between different versions of the xhtml library, and can safely be
    disregarded:

        2c2
        < <html xmlns="http://www.w3.org/1999/xhtml"
        ---
        > <html

4.  Install:

        sudo make install

    Note:  This installs `pandoc`, together with its wrappers and
    documentation, into the `/usr/local` directory.  If you'd rather
    install `pandoc` somewhere else--say, in `/opt/local`--you can
    set the `PREFIX` environment variable:

        PREFIX=/opt/local sudo make install

    If you don't have root privileges or would prefer to install
    `pandoc` and the associated wrappers into your `~/bin` directory,
    type this instead:

        PREFIX=~ make install-exec

5.  Build and install the Haskell libraries and library
    documentation (optional--for Haskell programmers only):

        make build-all
        sudo make install-all

    Note that building the library documentation requires [haddock].

[haddock]: http://www.haskell.org/haddock/ 

Removing Pandoc
---------------

Each of the installation steps described above can be reversed:

    sudo make uninstall

    PREFIX=~ make uninstall-exec

    sudo make uninstall-all

Other targets
-------------

The following 'make' targets should not be needed by the average user,
but are documented here for packagers and developers:

### Building and installing

* `configure`:  Performs the needed preprocessing to create a proper
  Cabal package for Pandoc:
    - Builds `ASCIIMathML.hs`, `DefaultHeaders.hs`, and `S5.hs`
      from templates in `src/templates` and data in `src/ASCIIMathML.js`,
      `src/ui`, and `src/headers`.
    - Stores values of relevant environment variables in `vars` for
      persistence.
    - Runs Cabal's "configure" command.
* `build-exec`:  Builds `pandoc` executable (using Cabal's "build"
  command) and creates the wrappers `html2markdown` and `markdown2pdf`
  from templates in `src/wrappers`.
* `build-doc`:  Builds program documentation (e.g. `README.html`).
* `build-lib-doc`:  Builds Haddock documentation for Pandoc libraries.
* `install-doc`, `uninstall-doc`:  Installs/uninstalls user documentation
   and man pages.
* `install-lib-doc`, `uninstall-lib-doc`:  Installs/uninstalls library
  documentation and man pages.
* `install-exec`, `uninstall-exec`:  Installs/uninstalls programs
  (`pandoc` and wrappers).

### Testing

* `test`:  Runs Pandoc's test suite.  (All tests should pass.)
* `test-markdown`:  Runs the Markdown regression test suite, using
  `pandoc --strict`.  (Three of the tests will fail.)

### Cleaning

* `clean`:  Restores directory to pre-build state, removing generated files.
* `distclean`:  Like clean, but also cleans up files created by `make deb`.

### Packaging

* `tarball`:  Creates a source tarball for distribution.
* `deb`:  Creates debian packages in `..` directory.
* `macport`: Creates MacPorts Portfile in `macports` directory.
* `freebsd`: Creates freebsd Makefile and distinfo in `freebsd` directory.
* `win-pkg`:  Creates a Windows binary package (presupposes `pandoc.exe`,
  which must be created by building Pandoc on a Windows machine).
* `website`:  Creates Pandoc's website in `web/pandoc` directory.

Installing pandoc using Cabal
=============================

Pandoc can also be installed using the standard Haskell packaging tool,
[Cabal](http://www.haskell.org/cabal/).  You'll need GHC 6.6 or greater
(see [Installing GHC](#installing-ghc), above). Just download the source
tarball, unpack, and type:

    runhaskell Setup.hs configure
    runhaskell Setup.hs build
    runhaskell Setup.hs install  # this one as root

This will install the pandoc executable and the Haskell libraries,
but not the shell scripts, man pages, or other documentation.

Note:  If you are using GHC 6.6.*, you will need to start by
replacing `pandoc.cabal` with a version suitable for GHC 6.6:

    cp pandoc.cabal pandoc.cabal.orig
    cp pandoc.cabal.ghc66 pandoc.cabal 

Installing pandoc using MacPorts
================================

This is an alternative to compiling from source on MacOS X.
[MacPorts] is a system for building and maintaining \*nix software
on MacOS X computers.  If you don't already have MacPorts, follow
[these instructions for installing 
it](http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts).  

Once you've installed MacPorts, you can install pandoc by typing:

    sudo port sync                 # to get the most recent ports
    sudo port install pandoc

Since pandoc depends on GHC, the process may take a long time.

Installing the Windows binary
=============================

Simply download the zip file from [pandoc's google code site].
Extract the files from the archive, and put `pandoc.exe` somewhere
in your PATH.

Note that the Windows binary distribution does not include the shell
scripts `markdown2pdf`, `html2markdown`, or `hsmarkdown`.  If you need
these, compile from source.

Installing pandoc on Debian
===========================

Pandoc is now in the debian unstable archive, and can be installed
using `apt-get` (as root):

    apt-get install pandoc               # the program, shell scripts, and docs
    apt-get install libghc6-pandoc-dev   # the libraries
    apt-get install pandoc-doc           # library documentation

Thanks to Recai Oktaş for setting up the debian packages.

Installing pandoc on FreeBSD
============================

Pandoc is in the FreeBSD ports repository (`textproc/pandoc`) and can be
installed in the normal way:

    cd /usr/ports/textproc/pandoc
    make install clean   # as root

Alternatively, you can use `pkg_add`:

    pkg_add -r pandoc

Note that the version of pandoc in FreeBSD's official repository may be
somewhat older than the most recent version.