如何使用Stack安装/使用本地版本的软件包?

时间:2015-09-29 16:32:37

标签: haskell package cabal haskell-stack

情况是,我正在尝试使用Stack安装Netwire。但是,最新的netwire 5.0.1存在一个问题,正如dhobbs报道的那样:http://hub.darcs.net/ertes/netwire/issue/13

由于我不知道问题何时解决,我下载了回购并自行进行了更改。但是,我不了解如何安装这样的本地修补版本。 stack install未将其安装到~/.stack中。有没有人有想法?

更新

现在我正在使用Stack开发一些其他库。如何让另一个项目使用该库?对相对路径进行硬编码看起来非常难看。

1 个答案:

答案 0 :(得分:18)

因此,您有一个项目,您希望使用本地修补的Netwire版本,在项目中,您有一个stack.yml,例如:

flags: {}
packages:
- '.'
extra-deps: {}
resolver: lts-3.7

您还依赖于您的cabal文件中声明的netwire

要在您的项目中使用修补的Netwire,只需将修补后的Netwire软件包放在项目的子目录中,可能名为netwire,然后更新stack.yml

flags: {}
packages:
- '.'
- netwire
extra-deps: {}
resolver: lts-3.7

现在stack build将使用修补的Netwire版本构建您的项目。

您也可以在线修改源代码(如果许可证允许)并使用tarball URL引用

- https://example.com/netwire.tar.gz

或git存储库和提交引用:

- location:
    git: git@example.com/netwire
    commit: 6a86ee32e5b869a877151f74064572225e1a0398

(查看文档了解更多信息:https://docs.haskellstack.org/en/stable/yaml_configuration/#packages-and-extra-deps