インストールしたものとは異なるバージョンの base を必要とするパッケージをインストールしようとしています (私は を持っています4.6.0.0、彼らは を必要とします< 4.6)。システムにこれらをインストールするにはどうすればよいですか?
編集: これらのパッケージは、.cabal 制約としてだけでなく、ビルドするために実際には古いパッケージを必要とします。
を再インストールすることはできないためbase、更新前にこれらのパッケージをインストールする唯一の方法は、ソースを取得することです。
cabal unpack foo
を編集foo.cabalし、そこの上限を変更しbase、パッケージのバージョンを増やして ( a を追加.1)、他のパッケージをインストールするときにcabal、それが壊れているとは思わないようにし.cabalます。のbase、および
cabal install
解凍したディレクトリから。
base-4.6 にはいくつかの重要な変更があったため。EqおよびShowスーパークラスは から削除されNum、スーパークラスとしてはBitsなくなりました。パッケージをコンパイルするには、 を追加するか、一部の関数の制約にNumコードを修正する必要がある場合があります。EqShowNum
それは不便ですが、最新のGHCバージョンで数週間最新の状態に保つための代償です.
プログラムの 1 つだけをこれらのパッケージに依存させたい場合はcabal-dev、 のドロップイン置換として使用できますcabal。前者は、パッケージのローカル コピーをcabal-dev現在のディレクトリのパスにインストールします。インストールするには、次を実行します。
cabal install cabal-dev
移植性のために、次のようなものを makefile に追加できます。
CABAL ?= cabal
build :
$(CABAL) build --builddir=$(BUILD_PATH)
次に、Bash の設定で次のようにします。
CABAL=cabal-dev
export CABAL
パッケージが現在持っているベースと互換性がない場合 (つまり、制約を変更するだけでは不十分)、唯一のオプションは、パッケージを自分で移植するか、正しいバージョンのベースを提供する古い ghc を使用することです。
ただし、最初にパッケージのメンテナーに確認することをお勧めします。開発ブランチはすでにあなたが必要としているものをサポートしているかもしれません。