2016-01-24 74 views
3

我想为Haskell的教程程序构建一个环境,因为我想尝试和学习该语言。所以我阅读了Cabal,并且已经在我的机器上使用了它,因为我有时更新了pandoc。我跟着一些tutorials,你应该运行的状态:如何创建一个Cabal Sandbox

$ cabal sandbox init 
$ cabal install --only-dependencies 
$ cabal build 

要使环境设置。但是,如果我努力的话,我收到以下消息:

$ cabal sandbox init 
Writing a default package environment file to 
/home/xiaolong/development/Haskell/cabal.sandbox.config 
Using an existing sandbox located at 
/home/xiaolong/development/Haskell/.cabal-sandbox 

ls命令的输出)

$ ls 
cabal.sandbox.config 

然后:

$ cabal install --only-dependencies 
cabal: Error reading local package. 
Couldn't find .cabal file in: . 

咦?突然间需要有一个.cabal文件?这令我感到困惑。我需要采取哪些步骤来获得环境,我可以简单地安装软件包,然后使用该环境运行我选择的任何教程的代码?

This是另一个建议描述工作流的教程。有东西在那里我失踪了。 (我的印象是,cabal sandboxes可以和python virtualenvs相媲美,这种方式非常有用,它不需要在系统范围内安装软件包,而是可以将它们安装到一个目录中,然后使用它)

+0

你需要在里面有一个cabal文件。您可以通过发出'cabal init'命令并按照以下步骤生成一个。您可以在cabal文件的名为'build-depend'的字段中列出您的程序包依赖项。 – Sibi

+0

@Sibi但我已经运行了'cabal sandbox init'。这与'cabal init'不一样吗?该教程中的步骤没有提及'cabal init' - 我会试试!哈,那工作!你能做出这个答案吗? – Zelphir

+0

您可以将'cabal --require-sandbox install '安装到沙箱中(假设您位于正确的目录中)。然后,您可以使用'cabal --require-sandbox repl'访问这些文件而不使用cabal文件。 '--require-sandbox'部分可能并不总是需要的,但如果你没有.cabal文件,这是你最安全的选择。显然'--dependencies' *不能在没有.cabal文件的情况下工作 - 它应该寻找哪些依赖关系?我认为这需要一个相当新的cabal版本。你不需要* .cabal文件 - 有一个更容易。 – user2407038

回答

3

您需要在其中有一个cabal文件,它描述了您的项目名称,软件包依赖关系,许可等。可以使用cabal init生成一个cabal文件,其后是一系列问题回答。

创建初始cabal配置文件后,您可以进入软件包目录并使用上述命令在其中创建沙箱。

您可能也有兴趣​​这是另一种替代(更好,如果你问我:))开发Haskell项目的工具。