我的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
有什么问题?
答案 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
本地软件包的沙箱到您的项目中。