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

Haskell 如何使用Stack安装/使用本地版本的软件包?,haskell,package,cabal,haskell-stack,Haskell,Package,Cabal,Haskell Stack,情况是,我正在尝试使用Stack安装Netwire。但是,正如dhobbs报告的那样,最新的netwire 5.0.1中存在一个问题: 因为我不知道这个问题什么时候能解决,我下载了回购协议,自己做了修改。然而,我不明白如何安装这样一个本地补丁版本堆栈安装不会将其安装到~/.stack中。有人有主意吗 更新 现在我正在使用Stack开发其他一些库。如何使另一个项目使用这些库?硬编码相对路径看起来非常难看。因此,您有一个项目,希望使用本地修补的Netwire版本,并且在项目中有一个堆栈.yml,例如

情况是,我正在尝试使用Stack安装Netwire。但是,正如dhobbs报告的那样,最新的netwire 5.0.1中存在一个问题:

因为我不知道这个问题什么时候能解决,我下载了回购协议,自己做了修改。然而,我不明白如何安装这样一个本地补丁版本<代码>堆栈安装不会将其安装到
~/.stack
中。有人有主意吗

更新


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

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

标志:{}
包装:
- '.'
额外部门:{}
分解器:lts-3.7
您还依赖于您的阴谋集团文件中声明的
netwire

要在您的项目中使用您的patched Netwire,只需将patched Netwire软件包放在项目的子目录中,可能称为
Netwire
,并更新您的
stack.yml
,如下所示:

标志:{}
包装:
- '.'
-网络
额外部门:{}
分解器:lts-3.7
现在,
stack build
将使用补丁Netwire版本构建您的项目

您还可以将修改后的源代码放到网上(如果许可证允许),并使用tarball URL引用源代码

- https://example.com/netwire.tar.gz
或git存储库和提交引用:

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

(查看文档了解更多信息:)

我知道这种方法。但是,我想把netwire库放在一个更方便的地方,与源代码隔离。按照你所说的做,我感觉自己像是在/usr下编译了一堆软件,并将源代码保存在那里。或者说,如果我在任何地方使用
stack ghci
,我都可以导入
Control.Wire
,我不是100%,但我认为这不是一个受支持的用例。你可以将git位置指定为一个包。请参阅stack.yaml上的文档。这样,您就不需要将源代码放在项目的目录中。很抱歉没有链接,我正在使用手机。您可以在需要将netwire作为带有符号链接的子目录时四处走动。只要把它放在你想要的任何地方,并在你的软件包中添加一个符号链接。这是一种黑客行为,但它能完成任务。