何度もcabal-installをインストールしている気がするのでメモ.

追記

id:nobsunさんのコメントから;

cabal-installを展開した中に bootstrap があります.これを実行すれば必要なパッケージを

インストールしてくれるようです.(試していませんが)

以下 README の引用

Quickstart on Unix systems

————————–

As a convenience for users on Unix systems there is a bootstrap.sh script which

will download and install each of the dependencies in turn.

$ ./bootstrap.sh

It will download and install the above three dependencies. The script will

install the library packages into `$HOME/.cabal/` and the `cabal` program will

be installed into `$HOME/.cabal/bin/`.

You then have two choices:

* put `$HOME/.cabal/bin` on your `$PATH`

* move the `cabal` program elsewhere and edit the `$HOME/.cabal/config` file

and set the `symlink-bindir` entry to point to an alternative location where

that is on your `$PATH`, eg a `$HOME/bin` directory.

どうやら $HOME に install するようです.

cabal-installってなに?

簡単に言えば,haskellのapt-getのようなもの.

% sudo cabal install foo --global

と打つとパッケージ foo がインストールされる(–globalなので多分/usr/local/のどこかにインストール).

環境

  • Ubuntu 9.04
  • GHC 6.8.2

cabal-installをインストールしたい…

基本的には

http://hackage.haskell.org/package/cabal-install

cabal-install-.tar.gz

を展開したあと,展開ディレクトリに cd して

% runhaskell Setup.hs configure
% runhaskell Setup.hs build
% sudo runhaskell Setup.hs install --global

でOKなんですが…

% runhaskell Setup.hs configure
Warning: Unknown fields: bug-reports (line 9)
Fields allowed in this section:
name, version, cabal-version, build-type, license, license-file,
copyright, maintainer, build-depends, stability, homepage,
package-url, synopsis, description, category, author, tested-with,
data-files, extra-source-files, extra-tmp-files
Configuring cabal-install-0.6.2...
Setup.hs: At least the following dependencies are missing:
Cabal >=1.6&&<1.7,
network >=1&&<3,
HTTP >=4000.0.2&&<4001,
zlib >=0.4&&<0.6

必要なパッケージが入ってないよ!って怒られます.

少なくとも,Cabal, network, HTTP, zlib が無いようです.

必要なパッケージのInstall

実は,Ubuntuには Haskell の Cabal, network, HTTP, zlib パッケージがあります.

なので,

% sudo apt-get install libghc6-cabal-dev libghc6-network-dev libghc6-http-dev libghc6-zlib-dev

これでよし,と思いきや…

% runhaskell Setup.hs configure
Warning: Unknown fields: bug-reports (line 9)
Fields allowed in this section:
name, version, cabal-version, build-type, license, license-file,
copyright, maintainer, build-depends, stability, homepage,
package-url, synopsis, description, category, author, tested-with,
data-files, extra-source-files, extra-tmp-files
Configuring cabal-install-0.6.2...
Setup.hs: At least the following dependencies are missing:
Cabal >=1.6&&<1.7, HTTP >=4000.0.2&&<4001

ちょっと,これ version 違うんだけど!って怒られました.

そこで,Cabal, HTTP はしかたないので, Hackage からソースをもらって,自分でInstallしましょう.

http://hackage.haskell.org/packages/archive/pkg-list.html

展開して

% runhaskell Setup.hs configure
% runhaskell Setup.hs build
% sudo runhaskell Setup.hs install --global

で問題ないはずです.HTTPでは Setup.hs はなく Setup.lhs なので注意.ちなみに,

% runhaskell Setup.hs help

できます.

やっと,cabal-install をインストール

% cd cabal-install-0.6.2/
% runhaskell Setup.hs configure
% runhaskell Setup.hs build
% sudo runhaskell Setup.hs install --global

とりあえず

% cabal update

とかしたあとに,好きなパッケージを入れると良いかと.

% sudo cabal install --global binary

こんな風に.

emacsのHaskell-modeが上手く動かない?

cabalを入れたあとで,emacs上で C-c C-l で ghciを起動すると

Prelude> :cd ~/.cabal/

というコマンドが自動実行されるという厄介な状況になります.

これは,(情報源は忘れましたが,たしか)Haskell-modeが.cablを探しに行くことが原因だそうです.

ということで,現在編集中のファイルがあるディレクトリに空のdummy.cabalなどをつくって置いておけば,

問題ないです(シャクですが).

最新のHaskell-mode(svn?)では修正されている,という情報をどこかで見た気がしますが,記憶違いかも.