使用`ghc-pkg`注册多个版本的软件包?

时间:2011-02-28 09:23:25

标签: haskell version ghc cabal cabal-install

我正在尝试在FreeBSD 8.1上安装GHCCabal。 我已经安装了GHC 7.0.1(因为它是当前的稳定版本),现在正在尝试安装Cabal(以安装cabal-install),但它失败并显示此错误消息。

%./Setup configure
Configuring Cabal-1.8.0.4...
Setup: At least the following dependencies are missing:
base >=4 && <3 && >=1 && <5, filepath >=1 && <1.2
%

我肯定有更高版本的库。

%ghc-pkg list
/usr/local/lib/ghc-7.0.1/package.conf.d
   Cabal-1.10.0.0
   array-0.3.0.2
   base-4.3.0.0
   bin-package-db-0.0.0.0
   bytestring-0.9.1.8
   containers-0.4.0.0
   directory-1.1.0.0
   extensible-exceptions-0.1.1.2
   ffi-1.0
   filepath-1.2.0.0
   ghc-7.0.1
   ghc-binary-0.5.0.2
   ghc-prim-0.2.0.0
   haskell2010-1.0.0.0
   haskell98-1.1.0.0
   hpc-0.5.0.6
   integer-gmp-0.2.0.2
   old-locale-1.0.0.2
   old-time-1.0.0.6
   pretty-1.0.1.2
   process-1.0.1.4
   random-1.0.0.3
   rts-1.0
   template-haskell-2.5.0.0
   time-1.2.0.3
   unix-2.4.1.0
/home/eonil/.ghc/x86_64-freebsd-7.0.1/package.conf.d
   network-2.2.1.5
   parsec-2.1.0.1
%

我应该降级到GHC 6.x吗?或者我可以安装较低版本的软件包吗? (或并排安装)

3 个答案:

答案 0 :(得分:3)

你已经遇到了所谓的Haskell's own DLL hell

您只需附加版本号即可安装以前版本的库。 cabal install base-3.0.3.2,虽然我不知道对GHC 7.0.1有什么限制。

您还可以使用cabal-devcapri创建小型cabal沙箱。这些将允许您从头开始,忽略可能导致冲突的包。

如果这些都不起作用且您确实发现必须重新安装GHC,我是否可以建议您使用Haskell Platform。它将GHC 6.12.3与许多有用的库捆绑在一起。

更新:误读您尝试实际安装cabal安装。我只是使用Haskell平台。它已经设置了所有这些东西。

答案 1 :(得分:1)

一种解决方案是安装ghc-6.12,它将提供Cabal-1.8。您可以使用该ghc为可执行文件构建cabal-install,然后在构建cabal可执行文件后切换到ghc-7以获取其他所有内容。

但是我认为你应该能够用ghc-7构建Cabal-1.8。看起来安装程序对基本依赖项感到困惑。尝试执行./Setup configure -fbase4 -f-base3并查看是否有效。

编辑:如果您安装了darc,可以查看cabal source tree。这已经为Cabal-1.10和ghc-7设置了,因此它应该开箱即用。如果你不能安装darc,你也可以找到源代码。

答案 2 :(得分:0)

我不得不降级GHC 6.x. 最初我为Happstack做了这个。但是,Happstack需要至少6.12.x的GHC,而在FreeBSD 8.1上使用GHC 7.x安装Cabal太难了。 (我不能成功)

我刚从GHC网站下载并安装了GHC 6.12.3,一切都神奇地起作用! Cabal,Happstack立即安装。由于交换空间不足,我只失败了一次。