我一直在使用的最新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库构建。
答案 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
。
希望这有帮助。