2012-10-15 7 views
5

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

編集:実際には、これらのパッケージには、.cabalの制約だけでなく、古いパッケージが必要です。

答えて

4

:あなたのBashの設定で次に

CABAL ?= cabal 

build : 
    $(CABAL) build --builddir=$(BUILD_PATH) 

baseを再インストールしないと、これらのパッケージをアップデートする前にインストールする唯一の方法は、ソースを取得することです。

その後、
cabal unpack foo 

foo.cabalを編集し、そこbaseの上限を変更し、他のパッケージをインストールする際cabalはそれが壊れていると思われないようにから(それは知っている.cabalファイルから、(.1を追加)パッケージのバージョンをバンプパッケージインデックス)は、それはあなたが解凍したディレクトリからbaseの異なるバージョンを必要とし、

cabal install 

言います。

ベース4.6ではいくつかの重要な変更があったため、 EqShowスーパークラスはNumから削除されていない、とBitsは、もはやスーパークラスとしてNumを持って、パッケージをコンパイルするためにいくつかの機能の制約にEqShowまたはNumを追加することで、コードを修正する必要があるかもしれません。

これは不便ですが、最新のGHCバージョンで数週間は最新のものになるための価格です。

+0

私が行うと、ベースの制約を満たすことができず、インストールを中止するというメッセージが表示されます。 – bfops

+0

何ですか? Base-4.6を許可するために '.cabal'ファイルを編集した後は? –

+0

@RobotGymnast具体的にどのパッケージをインストールしようとしていますか? –

1

あなたのプログラムのうちの1つをこれらのパッケージに依存させたい場合は、のドロップイン代替品としてcabal-devを使用できます。前者は、パッケージのローカルコピーを現在のディレクトリのcabal-devパスにインストールします。それをインストールするには、単に実行します:ポータビリティのために

cabal install cabal-dev 

、あなたがメイクファイルにこのような何かを追加することがあります。あなたができるので

CABAL=cabal-dev 
export CABAL 
1

パッケージは、(すなわち、単に制約を変更することが不十分である)あなたが現在持っているベースと互換性がない場合は、あなたの唯一のオプションは、ポートへのパッケージ自身であるか、ベースの正しいバージョンを提供し、古いGHCを使用しています。

まず、パッケージ管理者に確認してください。開発ブランチは必要なものを既にサポートしているかもしれません。

関連する問題