主要问题:我安装了多个版本的软件包。在 ghc/ghci 中编译或运行在包中有一个模块作为依赖项的模块时,我如何知道正在使用哪个版本?
相关问题:如果我正在安装一个 cabal 包,它的依赖项可以由一个包的多个版本来满足。将使用哪个版本?最新版本?
ghc 更喜欢与最新版本(即最高版本号)链接。
如果与 cabal 链接,它将解析 .cabal 文件中指定的版本(如果没有给出上限,则首选较新的版本)。
cabal-install 将首选最新版本,除非给出约束。
在存在约束的情况下,依赖解析变为 NP-complete,并且 cabal 依赖于求解器来找到令人满意的包分配。
一些有用的命令可以实际查看已安装的软件包并控制它们是否被使用:
ghc-pkg list
ghc-pkg register
ghc-pkg unregister