请原谅我这是一个FAQ,但我对如何正确解决这个问题感到有点困惑。
我最近下载了使用最新版 0.12.2 安装好的软件包TagSoup
然后我安装了使用最新版本安装好的软件包download-curl。我没有意识到的是,download-curl取决于TagSoup的版本=< 0.11,因此作为安装过程的一部分,Cabal也下载了旧版本的TagSoup。
这是一个问题,因为我想使用这两个库(最新版本的TagSoup和下载卷曲) - 当你出于某种原因这样做时,GHCI会变得有点混乱。
我的问题是,有没有办法在import语句中指定版本,即
import Text.Html.TagSoup-0.12.2
还是不行?我在想不到。
我解决这个问题的唯一方法是下载下载curl源代码,修改.cabal
文件以使用TagSoup-0.12.2并重新安装包裹,我的小“hack”就位会期待它 - 但我不认为这是解决方案
任何帮助将不胜感激
答案 0 :(得分:4)
通常,在.cabal
文件中指定所需的版本。特定包导入(-XPackageImports
)有一个扩展语法,但通常最好让Cabal处理。
那说,是的,如果你需要同时使用它们,那么你进入钻石依赖的黑暗领域。你的几乎是目前唯一可用的解决方案。 -XPackageImports
这里不是一个好主意,因为尝试在同一个程序中使用同一个库的两个版本可能不会链接,并且几乎可以肯定会在运行时转储核心> 管理链接时没有重复的符号。