Haskell 内置库,它去哪儿了?
Haskell inbuilt libraries, where does it go?
在我的 /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-0.10.4.0-d6f1d17d717e8652498cab8269a0acd5.conf
为什么 haskell 将 bytestring
库存储在两个不同的地方。由于 type/version 不匹配,这会导致编译错误。
我如何确保在我的 ubuntu 14.04 机器上一次只存储和使用任何库的一个版本?
Why does haskell store bytestring
libraries in two different places. This is leading to compilation errors due to type/version mis-match.
嗯,不。问题是您安装了两个版本的 bytestring
库。它们是否在同一个包数据库中并不重要。
你应该用 ghc-pkg unregister bytestring-0.10.6.0
解决这个问题(首先取消注册任何会破坏的包,如果有的话)然后添加一行
constraint: bytestring installed
给你的 ~/.cabal/config
以防止它再次发生。您可能希望对 GHC 附带的其他软件包执行相同的操作,至少是 ghc
软件包的所有依赖项(参见 ghc-pkg describe ghc
)。
我不知道是否有办法告诉 cabal 永远不要安装 any 软件包的第二个版本。 (在实践中,我发现临时安装多个版本的软件包非常有用,我会发现它比有用更烦人。)
在我的 /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-0.10.4.0-d6f1d17d717e8652498cab8269a0acd5.conf
为什么 haskell 将 bytestring
库存储在两个不同的地方。由于 type/version 不匹配,这会导致编译错误。
我如何确保在我的 ubuntu 14.04 机器上一次只存储和使用任何库的一个版本?
Why does haskell store
bytestring
libraries in two different places. This is leading to compilation errors due to type/version mis-match.
嗯,不。问题是您安装了两个版本的 bytestring
库。它们是否在同一个包数据库中并不重要。
你应该用 ghc-pkg unregister bytestring-0.10.6.0
解决这个问题(首先取消注册任何会破坏的包,如果有的话)然后添加一行
constraint: bytestring installed
给你的 ~/.cabal/config
以防止它再次发生。您可能希望对 GHC 附带的其他软件包执行相同的操作,至少是 ghc
软件包的所有依赖项(参见 ghc-pkg describe ghc
)。
我不知道是否有办法告诉 cabal 永远不要安装 any 软件包的第二个版本。 (在实践中,我发现临时安装多个版本的软件包非常有用,我会发现它比有用更烦人。)