Hackage は基本的に「テストしたバージョンまでで依存パッケージのバージョン上限を設けとけよ」的なノリなので,実際には問題ないんだけど上限よりも上のバージョンの依存パッケージしか入れられないから目的のパッケージがインストール出来ない,とかいう状況がチラホラある.バージョン上限を書き換えるためだけにデプロイやり直すのも作者が面倒だろうし.
んで,この状況にハマった時には目的のパッケージのソースを持ってきて手動でコンパイルするかとかやってたのだけど,cabal install のヘルプを良く見てみたら --allow-newer とかいう便利なオプションがあることに(今更ながら)気づいた.これつけとくとバージョン上限を無視してくれる.ほんと便利.
閑話休題.
cabal install を使った時とパッケージのソースで runghc Setup.hs configure とかやった時とでオプション無しの時の振る舞いが異なっていてハマった.cabal install がデフォルトでユーザ個別にパッケージをインストールをする(--user オプションがデフォルト?)のに対して,手元に持ってきたパッケージで runghc Setup.hs configure とかやった時にはグローバルにインストールされたものを探しに行っていた(--global オプションがデフォルト).おかげで入れたはずのパッケージが見つからないと怒られて,でも ghci で確かめると普通に import できて,何がおかしいのか暫く悩みまくった. runghc Setup.hs configure --verbose=3 とかやったら ghc-pkg を呼ぶときに --global をつけているのが見えて分かったのだけど,ここらのデフォルトの違いはどこから出てきたのやら.
- Newer: Meadow で Ispell