如果我想安装新版本的GHC,我需要做什么?

What do I need to do if I want to install a new version of GHC?

目前,我在 ubuntu 14.04 系统上使用 GHC 7.10.1,刚才我从邮件列表中注意到一个新版本包含很多错误修复已发布。所以我正在考虑更新我的 GHC。

我知道如何安装 GHC,但是,我对如何处理已通过 cabal 安装的软件包知之甚少。似乎那些包安装到 ~/.cabal,例如,libs 安装到 ~/.cabal/lib/x86_64-linux-ghc-7.10.1 并在 ~/.ghc/x86_64-linux-7.10.1.

注册

路径名(...x86_64-linux-7.10.1...) 似乎暗示它们只能被GHC 7.10.1使用,所以如果我想使用新版本的GHC并从我的系统中删除旧的 ghc 7.10.1,我应该清理它们并重新安装这些软件包吗?

例如,我应该 rm -rf ~/.cabal && rm -rf ~/.ghc 并重新安装 cabal 和 GHC 吗?还是我应该把那些包裹留在那里?如果是这样,那些安装的包会被新的 GHC 重用吗?

是的,您需要在更新编译器时重新安装软件包。

但是,如果您删除 ~/.ghc,那么从 GHC 的角度来看,这会删除这些包。您也可以删除 ~/.cabal 并重新安装所有内容,但 ~/.cabal/bin(包括 cabal)中的二进制文件通常仍然有效,因此通常保留这些文件更容易并节省一些时间(看看看看那里有什么)。有些可能有问题 - 我认为某些二进制文件可能在内部硬编码了 GHC 路径,因此会损坏,但您可以随时重新安装它们。

~/.cabal/packages 包含缓存下载,因此是否删除它取决于您。下次 运行 cabal 时,数据将再次被拉下。如有疑问,请将其删除。

您应该删除 ~/.cabal/lib,它包含已编译的包并且不会与其他 GHC 兼容。 ~/.cabal/share.

同样

除非您手动编辑了 ~/.cabal/config 文件并希望保留更改,否则您也可以删除它并创建一个新文件。

不需要删除任何内容。如果您在安装 GHC 7.10.1 的同一位置安装 GHC 7.10.2,则所有符号链接 ghcghcighc-pkg 等都将被覆盖以指向 7.10。 2,但您仍然可以 运行 版本化程序 ghc-7.10.1ghci-7.10.1ghc-pkg-7.10.1 等,或者告诉 cabal 使用特定的编译器构建-w 标志。所有库和库注册信息(无论它们是 GHC 附带的、安装在用户包数据库中还是在沙箱中)都(默认情况下)存储在特定于 GHC 版本的子目录下,因此不同版本的 GHC 不会相互干扰其他.

如果您 运行磁盘空间不足 space,我建议您不要删除 GHC 7.10.1。毕竟 7.10.2 昨天刚刚发布,如果您遇到 7.10.2 的奇怪问题,可能值得检查 7.10.1 是否也受到影响。