Haskell 阴谋集团:重建包以使用更新的库
我正在使用Ubuntu14.10和GHC7.6.3以及通过UbuntuPackage安装程序安装的cabal,并尝试使用数据结构,我天真地使用:Haskell 阴谋集团:重建包以使用更新的库,haskell,Haskell,我正在使用Ubuntu14.10和GHC7.6.3以及通过UbuntuPackage安装程序安装的cabal,并尝试使用数据结构,我天真地使用: cabal install heap 当我开始将库导入到代码中时,出现了以下链接错误: ... Loading package primitive-0.5.0.1 ... linking ... done. ... Loading package heap-1.0.0 ... linking ... done. ... Loading package
cabal install heap
当我开始将库导入到代码中时,出现了以下链接错误:
...
Loading package primitive-0.5.0.1 ... linking ... done.
...
Loading package heap-1.0.0 ... linking ... done.
...
Loading package primitive-0.5.2.1 ... linking ... done
...
GHCi runtime linker: fatal error: I found a duplicate definition for symbol
hsprimitive_memset_Word32
whilst processing object file
/home/simon/.cabal/lib/primitive-0.5.2.1/ghc-7.6.3/HSprimitive-0.5.2.1.o
This could be caused by:
* Loading two different object files which export the same symbol
* Specifying the same object file twice on the GHCi command line
* An incorrect `package.conf' entry, causing some object to be
loaded twice.
GHCi cannot safely continue in this situation. Exiting now. Sorry.
理论上解释了该做什么,但说明不够具体,我无法遵循
如何让Heap使用primitive-0.5.2.1(我假设这个很少使用的库已经过时),或者我应该做一些完全不同的事情?一个解决方案可能是专门安装早期版本的
Heap
:
cabal install heap-0.6.0
您可能必须首先注销heap-1.0.0
另一个选择是清除~/.ghc目录。当然,你必须重新安装阴谋集团的软件包
我认为最好的选择是开始在你的项目中使用阴谋集团沙箱
编辑:heap-1.0.0包含快速检查测试,因此引入了所有快速检查依赖项。要在不使用QuickCheck的情况下安装该版本,请尝试以下操作:
cabal get heap-1.0.0
cd-heap-1.0.0
heap.cabal
并删除构建依赖项:
行cabal安装
我假设您没有使用
cabal
来构建代码。使用cabal
及其沙箱功能是避免此问题的最佳方法。我只需键入cabal install heap
并最终导致此错误。如果您确实需要,还可以使用nix
选项(包管理器)。我自己不使用它,但我听说比沙盒好得多。好吧,ghc pkg unregister heap
和使用0.6似乎是可行的,但我不知道为什么旧代码使用新库。有没有简单的方法可以使用1.0.0?添加了关于如何安装1.0.0版的详细信息关于如何避免阴谋集团地狱的一些建议: