5

在 cabal 安装 darcsden 代码后,我收到以下消息:

cabal:重新安装可能会破坏以下软件包: bin-package-db-0.0.0.0 ghc-7.4.1 如果您仍想安装,请使用--force-reinstalls。

我该如何解决这个问题?这是什么意思?

4

1 回答 1

8

为什么会这样?

如果您查看 的完整输出cabal install darcsden,您会发现几行如下所示:

binary-0.5.1.0 -bytestring-in-base (reinstall) changes: array-0.4.0.0 ->
0.3.0.3, containers-0.4.2.1 -> 0.4.1.0

这意味着cabal找到了一个安装计划,该计划涉及(破坏性地)重新安装您系统上已有的软件包。

现在,GHC 包对它们的(自反)依赖项相当敏感,并且通常只有在所有依赖项的正确版本可用、针对其依赖项的正确版本进行编译等情况下才能工作。因此,用新版本的已更改依赖项替换已安装的包可能会导致系统上的某些包变得不可用。从 0.14.0 版本开始,cabal提前警告您此类情况,以防止您意外破坏系统。

在您的情况下,ghc并且bin-package-db是可能损坏的软件包之一,因为它们取决于binary重新安装的软件包。所以你不应该尝试使用这个--force-reinstalls标志,因为它可能真的会破坏你的 GHC。

你能做什么?

如果您扫描将要重新安装的内容,您会看到很多依赖项已降级。这暗示您尝试安装的软件包可能尚未正确更新到 GHC 7.4.1。

通常,您可以尝试调用cabal install darcsden --avoid-reinstalls以明确尝试查找没有重新安装的安装计划。不幸的是,在这种情况下,它失败了(对我来说)。

我已经简要查看了darcsden包描述,但看起来有很多依赖项darcsden需要更新。所以剩下的选择是:说服作者darcsden发布更新版本,或者darcsden使用旧版本的 GHC(例如 7.0.4)安装,这应该可以工作。

于 2012-06-26T13:32:31.407 回答