如何创建一个 Cabal 沙盒?

6
我希望建立一个Haskell教程程序的环境,因为我想尝试学习这门语言。所以我了解了Cabal并已经在我的电脑上安装了它,因为有时我会更新pandoc。我遵循了一些教程, 它们说明你应该运行以下命令:
$ 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文件?这让我感到困惑。我需要采取哪些步骤来获得一个环境,在该环境中我可以简单地安装软件包,然后使用该环境运行任何我选择的教程代码?

这个是另一个建议采用所描述的工作流程的教程。我似乎缺少了某些东西。

(我认为,cabal沙盒与python虚拟环境相当,它们在不需要系统范围内安装软件包的情况下非常有用,而是可以将它们安装在目录中,然后使用该环境来运行程序。)


你需要在其中拥有一个cabal文件。您可以通过发出“cabal init”命令并按照步骤进行来生成一个cabal文件。您可以在cabal文件的名为“build-depends”的字段中列出软件包依赖项。 - Sibi
@Sibi 但我已经运行了 cabal sandbox init。这不是和 cabal init 一样吗?那个教程上的步骤没有提到 cabal init - 我试试看!哈,成功了!你能把这变成一个答案吗? - Zelphir Kaltstahl
您可以使用 cabal --require-sandbox install <pkg-name> 命令将单个软件包安装到沙盒中(假设您在正确的目录下)。然后,您可以使用 cabal --require-sandbox repl 命令访问这些软件包而无需 cabal 文件。--require-sandbox 部分可能并不总是需要,但如果您没有 .cabal 文件,则这是最安全的选择。显然,--dependencies 无法在没有 .cabal 文件的情况下工作 - 它应该查找哪些依赖项呢?我认为这需要一个相当新的 cabal 版本。您不一定需要 .cabal 文件 - 只是拥有一个会更加方便。 - user2407038
1个回答

4
你需要在项目中拥有一个cabal文件,它描述了你的项目名称、包依赖、许可证等信息。可以使用 cabal init 命令生成cabal文件,并回答一系列问题。
创建初始cabal配置文件后,可以进入包目录并使用上述命令创建沙盒。
你可能还对另一个名为Stack的工具感兴趣,这是另一种开发Haskell项目的选择(如果你问我的话,我认为它更好 :))。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接