我忘记在我的~/.cabal/config
中启用构建库以进行性能分析,然后在新机器上安装一堆软件包,现在--reinstall world
尝试修复这种情况已经使所有内容都自然崩溃了。
我认为更好地利用我的时间来清除一切。我该如何正确地做到这一点?
答案 0 :(得分:59)
Cabal没有跟踪它的安装情况,它只是使用ghc的库机制(或者如果你没有使用ghc那么使用其他编译器的机制),所以你可以使用rm -r ~/.ghc
删除所有本地 - 已安装的库。
如果您安装了多个ghc,并且只想删除特定ghc的库,请删除与要删除的ghc相对应的子目录。
例如,我可以使用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
,它将记录该版本。您应该能够删除世界文件并重新开始,或者如果您查看它并且依赖项是可接受的,您可以尝试运行cabal install world
。或者你可以忽略它而不是使用cabal的世界支持(这就是我所做的)。
答案 1 :(得分:18)
这个ghc-pkg-reset shell脚本清除〜/ .ghc /和〜/ .cabal /,更有选择性。 (并且随附的ghc-pkg-clean脚本可以帮助从混乱的软件包安装中恢复,也许可以避免重置。)我觉得这些很有用。