我的cabal包是FUBAR; 我怎样才能清除它们并重新开始?

在我的~/.cabal/config在新的机器上安装了一大堆软件包之前,我忘了启用构build库来分析,现在,一个--reinstall world试图解决这个问题,这一切都是自然而然的。

我认为这是更好地利用我的时间来清除一切。 我如何正确地做到这一点?

Cabal并没有跟踪它所安装的内容,它只是使用ghc的库机制(或者如果你不使用ghc,则使用其他编译器的机制),所以你可以使用rm -r ~/.ghc来删除所有本地安装的库。

如果你已经安装了多个ghc,而你只想删除特定ghc的库,删除你想删除的ghc对应的子目录。
例如,我可以用rm -r ~/.ghc/x86_64-linux-7.6.0.20120810 -r〜 rm -r ~/.ghc/x86_64-linux-7.6.0.20120810删除我为ghc-7.6.0安装的所有东西
如果你喜欢,你也可以使用这个来保存你的ghci_history。

 ll ~/.ghc/ total 24 -rw-r--r-- 1 johnl johnl 2300 Aug 21 11:47 ghci_history drwxr-xr-x 3 johnl johnl 4096 Jun 17 19:09 x86_64-linux-6.12.3 drwxr-xr-x 3 johnl johnl 4096 May 17 08:17 x86_64-linux-7.2.1 drwxr-xr-x 3 johnl johnl 4096 May 16 17:34 x86_64-linux-7.4.1 drwxr-xr-x 3 johnl johnl 4096 Jun 15 08:21 x86_64-linux-7.4.2 drwxrwxr-x 3 johnl johnl 4096 Aug 15 12:37 x86_64-linux-7.6.0.20120810 

编辑: ~/.cabal/world是用户指定的版本限制的已安装软件包的列表。 所以在大多数情况下,它会包括例如mtl -any 。 如果你已经安装了特定版本的软件包,例如发行cabal install mtl-2.1.1 ,它将会logging该版本。 您应该能够删除世界文件并重新开始,或者如果您仔细查看并依赖关系是可接受的,您可以尝试运行cabal install world 。 或者你可以忽略它,不使用cabal的世界支持(这就是我所做的)。

这个ghc-pkg-reset shell脚本清理〜/ .ghc /和〜/ .cabal /,更有select性。 (和附带的ghc-pkg-clean脚本可以帮助从一个困惑的软件包安装恢复,也许避免重置。)我觉得这些很有用。