1

我一直在使用的最新 cabal-install(0.13.3,来自 darcs repo)很好;它让您知道何时可能会通过重新安装来破坏 GHC 安装。我想知道的是:假设 acabal install foo 执行破坏我的 GHC 的重新安装。如果我cabal-dev install foo代替会发生什么?我能避免破坏 GHC 吗?我真的可以foo在 cabal-dev 沙箱中使用该软件包,还是只是一个损坏的沙箱?

示例:yesod、GHC 7.4.1、cabal-dev 0.9 构建自 github 源代码、Cabal 1.14.0 库。

4

1 回答 1

5

澄清一下,如果我的理解是正确的,那么无论哪种情况,您都不会破坏 GHC。我相信您指的是安装一个包,然后重新安装另一个包的底层依赖项之一,从而破坏另一个包的依赖链并阻止它在使用时正常工作/编译。只需从您的主文件夹中删除 .ghc 并重新安装 cabal 即可解决此问题,尽管方式非常痛苦。

使用 cabal-dev 时,所有 cabal 安装步骤和 ghc-pkg 注册步骤都在本地沙箱环境中完成。您的全局/用户 ghc 包根本没有被触及。由于您通常为每个项目实例化一个 cabal-dev 沙箱,因此通常不会发生上述冲突。

要回答您的问题 - 这完全取决于该特定 cabal-dev 沙箱中已经安装的内容。如果没有冲突,它不会破坏任何东西。如果您强制使用--reinstall,您可能必须--reinstall使用本地 cabal-dev 沙箱中的任何包,这些包依赖于您刚刚重新安装的包。

无论如何,您的 GHC 安装本身不会中断(或以任何方式更改),您始终可以rm -rf cabal-dev在项目文件夹下重做cabal-dev install

希望这可以帮助。

于 2012-02-07T07:45:49.913 回答