2011-06-29 78 views
3

如果这是一个FAQ,请原谅我,但我对如何正确解决此问题感到有点困惑。Cabal的软件包版本冲突

我最近下载里面装精了最新版本0.12.2

TagSoup然后我安装的安装罚款与最新版本的软件包download-curl。我没有意识到的是,下载卷曲取决于TagSoup的版本= < 0.11,因此作为安装过程的一部分,Cabal也下载了较旧版本的TagSoup。

这是一个问题,因为我想同时使用两个库(最新版本的TagSoup和下载卷曲) - 当您因为某种原因而做GHCI时,会陷入一团糟。

我的问题是,是否有指定的import语句版本的方式,即

import Text.Html.TagSoup-0.12.2 

,或者这是一个没有去?我不想。

我解决这个得到的唯一办法就是下载下载卷曲源,修改.cabal文件使用TagSoup-0.12.2与重新安装包我的小“黑客”的地方,因为我希望它其中工程 - 但我不认为这是解决

任何帮助,将不胜感激

+0

这就是解决方案。另外,一定要用旧的版本发送包裹的维护人员(请注意,在这种情况下)。 –

回答

4

通常一个指定的文件.cabal所需版本。有特定软件包导入的扩展语法(-XPackageImports),但让Cabal处理通常会更好。

也就是说,如果你需要使用两者,那么你就进入了钻石依赖的黑暗境界。你们几乎是目前唯一可用的解决方案。 -XPackageImports不是这里有一个好主意,因为试图在同一个程序中使用同一个库的两个版本可能不会链接,并且几乎肯定会在运行时转储核心,如果它确实设法链接而没有重复的符号。

+0

啊好吧谢谢,谢谢GHC扩展的提示,但正如你所说这可能不适用于我的情况。手动编辑cabal文件并在本地升级版本现在就足够了。 – djhworld