Haskell内置库,它去哪里了?

时间:2015-05-20 12:29:57

标签: haskell ghc bytestring

在我的/home/sk/.ghc/x86_64-linux-7.8.4/package.conf.d文件夹中,bytestring包的条目为,

bytestring-0.10.6.0-7682cf7d45ee92d104399a67f3bce6ba.conf

在我的/opt/ghc/7.8.4/lib/ghc-7.8.4/package.conf.d文件夹中,有一个bytestring的条目为

bytestring-0.10.4.0-d6f1d17d717e8652498cab8269a0acd5.conf

为什么haskell将bytestring库存储在两个不同的位置。由于类型/版本不匹配,这会导致编译错误。

我如何确保在我的ubuntu 14.04计算机上一次只存储和使用任何库的一个版本?

1 个答案:

答案 0 :(得分:2)

  

为什么haskell将bytestring库存储在两个不同的位置。由于类型/版本不匹配,这会导致编译错误。

嗯,不。问题是您安装了bytestring库的两个版本,句点。它们是否在同一个包数据库中并不重要。

您应该使用ghc-pkg unregister bytestring-0.10.6.0解决此问题(首先取消注册任何会破坏的软件包,如果有的话),然后添加一行

constraint: bytestring installed

~/.cabal/config以防止它再次发生。您可能希望对GHC附带的其他软件包执行相同的操作,至少是所有与ghc软件包相关的软件包(请参阅ghc-pkg describe ghc)。

我不知道是否有办法告诉cabal永远不会安装第二版任何包。 (在实践中,我发现暂时安装多个版本的软件包非常有用,我觉得它比有用更烦人。)