如果有一个本地签出的库,它使用应用程序使用的cabal构建。我想建立我的应用程序对抗本地库而不是hackage的东西,但我不知道如何做到这一点。这似乎是我应该做的事情,我似乎无法弄清楚如何。
沙盒
如果它重要或使事情复杂化,应用程序位于应用程序路径目录中cabal-sandbox-config
文件的cabal沙箱中。
我正在努力实现的目标
我正在构建Yesod应用程序,我想调整其中一个依赖项(莎士比亚)的行为。我想根据我的调整版本构建我的应用程序。
答案 0 :(得分:10)
使用专为此用例设计的cabal sandbox add-source
。
示例:
$ git clone https://github.com/SomeUser/SomeDependency
$ cd /path/to/my-project
$ cabal sandbox add-source /path/to/SomeDependency
$ cabal build
作为奖励,如果您稍后更新SomeDependency
并尝试重建my-project
,cabal
会注意到并重新安装SomeDependency
。
答案 1 :(得分:1)
选项1:
您可以克隆项目,然后在克隆目录中运行cabal安装。
git clone https://github.com/yesodweb/shakespeare.git
这将为您提供一个目录shakespeare
,其中包含.cabal
文件。
所以只需输入目录并运行cabal install
即可。这将安装shakespeare
。现在继续安装你的项目。
关键点:
您需要先自己安装莎士比亚,这样当您编译自己的项目时,ghc
或cabal
并不会尝试自行安装莎士比亚依赖(默认情况下来自hackage)
选项2:
remote-repo:hackage.haskell.org:http://hackage.haskell.org/packages/archive
remote-repo:local.hackage:http://local.hackage/packages/archive
如果您要调整多个软件包,这可能会有意义,但您可能最好不要这样做,因为除了其他方面,跟踪您的调整版本的更新将是一个梦魇。