解析索引缓存失败Data.Binary.Get.runGet at position 16:

问题描述

我试图为我正在处理的项目编写安装脚本,我不得不通过以下链接再次安装 ghc(没有下载 vms 的资源)来测试它:curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh .一切正常,但是当我使用 cabal run proj 运行项目时,我收到以下警告,其中 A、B 代表 32 个字符串:

Warning: Parsing the index cache Failed (Data.Binary.Get.runGet at position
16: Non-matching structured hashes: A;
expected: B). Trying to regenerate the index
cache...

我去了我的主目录并删除.ghcup 和空的 .ghc 目录。然后我去了usr/local/bin,发现了以下内容

/usr/local/bin > ls | grep ghc
ghc
ghc-8.8.3
ghc-pkg
ghc-pkg-8.8.3
ghci
ghci-8.8.3
haddock-ghc-8.8.3
runghc
runghc-8.8.3

在我的 Brew 文件夹中,我有一个 ghc-8.8.3 实例。我真的不确定我是否只是不经意地把自己搞砸了安装。是建议重新安装还是删除每个 .ghc 出现栏一个就可以了?

解决方法

看起来 Cabal 商店在此过程中不知何故变得不一致(参见 cabal issue #6659 的最初讨论)。假设您使用的是 GHC 8.8.3,删除 ~/.cabal/store/ghc-8.8.3 应该允许它正确地重新创建。

顺便说一句,如果您打算通过 ghcup 管理 GHC、cabal-install 和其他工具的安装,您不妨删除系统范围内的 Brew 安装,这可能是不必要的。