インストールしたものとは異なるバージョンの 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
コードを修正する必要がある場合があります。Eq
Show
Num
それは不便ですが、最新の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 を使用することです。
ただし、最初にパッケージのメンテナーに確認することをお勧めします。開発ブランチはすでにあなたが必要としているものをサポートしているかもしれません。