GHC找不到已安装的模块

时间:2015-05-01 19:40:10

标签: haskell package ghc

我的haskell安装找不到操作系统安装的bytestring模块

$ ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> :m +Data.ByteString.Lazy

<no location info>:
Could not find module `Data.ByteString.Lazy'
It is not a module in the current program, or in any known package.

但是我使用yum安装了这个模块:

$ rpm -ql ghc-bytestring
/usr/lib64/ghc-7.6.3/bytestring-0.10.0.2
/usr/lib64/ghc-7.6.3/bytestring-0.10.0.2/libHSbytestring-0.10.0.2-ghc7.6.3.so
/usr/share/doc/ghc-bytestring
/usr/share/doc/ghc-bytestring/LICENSE

有什么问题?

1 个答案:

答案 0 :(得分:1)

如果发生这种情况,您应该可以通过ghc-pkg list了解更多信息。例如,如果您的软件存储库提供的二进制包被破坏,则可能发生这种情况; ghc-pkg list会报告这一点。通常,GHC不会在/usr/lib64/ghc-7.6.3/中查找包,或者该目录的package.cache未更新以反映新包。

可能导致GHC查找错误位置的一件事是,如果机器上有多个GHC:例如,如果which ghc显示/usr/local/bin/ghc,那么您可能在某些时候从源编译GHC并且它的软件包占用了一些/usr/local/lib/ghc-7.6.3/package.conf.d/文件夹,而您的存储库已经安装了/usr/bin/ghc,它正在查找您想要的文件夹。

无论如何,修复:如果package.cache文件存在且文件的有效条目,那么您可以运行ghc -package-conf /path/to/package.cache ...将这些包添加到您的可执行文件中。如果您还有其他问题,ghc -v ...是一个很好的资源,用于调试“在这里使用该软件包的哪个版本?”问题类型。

如果package.cache文件不存在,那么您遇到了更大的问题,可能最简单的方法是在/home下查找ghc-pkg list上显示的目录}。将所需的软件包安装到该目录,GHC应该接受它,即使它不了解这些更大的上下文。您还可以开始使用cabal本地软件包的沙箱到您的项目中。