重新安装cabal-dev的行为

时间:2012-02-07 06:56:10

标签: haskell ghc cabal-install

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

Example: yesod,GHC 7.4.1,cabal-dev 0.9由github source,Cabal 1.14.0库构建。

1 个答案:

答案 0 :(得分: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

希望这有帮助。