PandocはHaskellで書かれており、最新版のPandocを利用するには、Haskell PlatformのCabalというパッケージマネージャを用いてビルドする必要があります。
しかし、Cabalは依存関係の解決が苦手で、俗に言うDependency HellやCabal Hellといった依存関係のトラブルに巻き込まれがちです。
最近のHaskell Platformにはsandboxという機能がついており、これを使うと依存関係のトラブルを大きく減らすことができます。
今回は、このsandboxを使ってPandocをインストールしてみましょう。
以下、Unix系OS(Mac, Linuxなど)を前提とします。
1. Haskell Platformをインストールする
既に済んでいる場合は2.へ飛ぶ。
Macの場合(Homebrew)
brew install ghc Haskell Platform
その他の場合
https://www.haskell.org/platform/ からHaskell Platformのインストーラをダウンロードする。
2. Cabal本体をアップグレードする
cabal update
cabal install cabal-install
GHCが古いと言われたら、以下の手順でGHCを削除する。
- Homebrewの場合は
brew remove ghc Haskell Platform
でいけるはず。 - インストーラを使った場合:
cd /Library/Haskell/bin
./uninstall-hs # バージョン番号を見つける
./uninstall-hs thru <バージョン番号> --remove
3. cabal sandbox をセットアップする
mkdir pandoc
cd pandoc
cabal sandbox init
4. Pandocをインストールする
cabal install pandoc
この後時間がかなりかかるので、コーヒーブレイク。
5. Pandocのバイナリをパスの通ったところに置く
Pandocのバイナリが$(pwd)/.cabal-sandbox/bin
にできているので、これをコピーするかシンボリックリンクを作成します。
パスの通ったところならどこに置いてもよいですが、下記がおすすめです。
-
~/.cabal/bin
(事前にパスを.bash_profileなどに設定する必要あり) /usr/local/bin
例えば、シンボリックリンクを作成する場合は以下の通りです:
ln -s $(pwd)/.cabal-sandbox/bin ~/.cabal/bin
以上で完了です。pandoc -v
でバージョン情報が表示されたら成功です。