5

インストールしたものとは異なるバージョンの base を必要とするパッケージをインストールしようとしています (私は を持っています4.6.0.0、彼らは を必要とします< 4.6)。システムにこれらをインストールするにはどうすればよいですか?

編集: これらのパッケージは、.cabal 制約としてだけでなく、ビルドするために実際には古いパッケージを必要とします。

4

3 に答える 3

4

を再インストールすることはできないためbase、更新前にこれらのパッケージをインストールする唯一の方法は、ソースを取得することです。

cabal unpack foo

を編集foo.cabalし、そこの上限を変更しbase、パッケージのバージョンを増やして ( a を追加.1)、他のパッケージをインストールするときにcabal、それが壊れているとは思わないようにし.cabalます。のbase、および

cabal install

解凍したディレクトリから。

base-4.6 にはいくつかの重要な変更があったため。EqおよびShowスーパークラスは から削除されNum、スーパークラスとしてはBitsなくなりました。パッケージをコンパイルするには、 を追加するか、一部の関数の制約にNumコードを修正する必要がある場合があります。EqShowNum

それは不便ですが、最新のGHCバージョンで数週間最新の状態に保つための代償です.

于 2012-10-15T22:38:56.413 に答える
1

プログラムの 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
于 2012-10-15T22:32:10.810 に答える
1

パッケージが現在持っているベースと互換性がない場合 (つまり、制約を変更するだけでは不十分)、唯一のオプションは、パッケージを自分で移植するか、正しいバージョンのベースを提供する古い ghc を使用することです。

ただし、最初にパッケージのメンテナーに確認することをお勧めします。開発ブランチはすでにあなたが必要としているものをサポートしているかもしれません。

于 2012-10-16T02:37:57.243 に答える