在我的/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计算机上一次只存储和使用任何库的一个版本?
答案 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永远不会安装第二版任何包。 (在实践中,我发现暂时安装多个版本的软件包非常有用,我觉得它比有用更烦人。)