我在这里有几件事情让我感到困惑,所以我会尽可能清楚地解释每一件事。
我一直在尝试使用cabal安装haskell的diagrams
软件包。 I've seen it suggested使用沙箱安装软件包,这就是我所做的。我不清楚的一点是沙箱的确切含义 - 我知道我可以用cabal sandbox init
初始化一个沙箱并用cabal install
在其中安装软件包,但我不知道了解如何在安装后使用这些软件包。
然后我尝试使用ghc编译测试脚本,这导致以下错误:
diagramstutorial.lhs:3:10:
Could not find module 'Diagrams.Prelude'
Use -v to see a list of the files searched for.
对于脚本应该加载的另一个模块有类似的错误。这些模块肯定都包含在图表包中,并且cabal似乎很高兴正确安装了包。我希望有一些简单的东西,我只是不明白,但我不知道它是什么。
答案 0 :(得分:2)
我输入
ghc --make diagramstutorial.lhs
来编译它
这将使GHC使用常规用户包数据库(即不是沙箱)。请改用cabal exec -- ghc --make diagramstutorial.lhs
,以便GHC在沙盒的上下文中运行。
您还可以使用cabal repl
在沙盒中使用GHCi。当然,如果/当您开始准备cabal包时,如果您在其目录中,则所有cabal命令(cabal build
等)都将使用沙箱。
我不清楚的一点是沙箱是什么
一组包含目录本地数据库的数据包。除cabal.sandbox.config
配置文件外,还有一个隐藏目录.cabal-sandbox
,其中diagrams
和您安装的其他软件包位于其中。
答案 1 :(得分:1)
找到沙箱目录,找到packages.conf.d
文件。
例如,/home/user/.cabal-sandbox/x86_64-linux-ghc-7.8.4-packages.conf.d
使用package-db
标志重新运行GHC命令:
ghci -package-db /home/user/.cabal-sandbox/x86_64-linux-ghc-7.8.4-packages.conf.d --make diagramstutorial.lhs
现在一切都应该有效