在对darcsden代码进行cabal安装后,我收到了以下消息:
cabal:重新安装可能会破坏以下软件包: 宾包-DB-0.0.0.0 GHC-7.4.1 如果你想要安装,请使用--force-reinstalls。
我如何解决这个问题?这是什么意思?
答案 0 :(得分: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
的作者发布更新版本,或使用旧版本的GHC(例如7.0.4)安装darcsden
,这应该可行。