Haskell 为什么cabal安装并重新安装.cabal/lib中已有的软件包

Haskell 为什么cabal安装并重新安装.cabal/lib中已有的软件包,haskell,cabal,Haskell,Cabal,我正在尝试使用CircleCI构建一些Haskell项目。Circle会在每次构建之后自动缓存/home/ubuntu/.cabal目录,我认为这会加快构建速度,但它们似乎和以前一样耗时——只跳过了下载步骤 我使用的构建说明是 cabal update cabal install --only-dependencies --enable-tests cabal configure --enable-tests cabal build cabal test 我预计,install——只有依赖项才

我正在尝试使用CircleCI构建一些Haskell项目。Circle会在每次构建之后自动缓存
/home/ubuntu/.cabal
目录,我认为这会加快构建速度,但它们似乎和以前一样耗时——只跳过了下载步骤

我使用的构建说明是

cabal update
cabal install --only-dependencies --enable-tests
cabal configure --enable-tests
cabal build
cabal test
我预计,
install——只有依赖项才能看到缓存并更快地运行

可能出了什么问题?

几个月前,出现了一系列阴谋集团问题。我记得Haskell没有指定的应用程序二进制接口,
ghc
编译器在编译过程中进行了大量的库间图缩减。因此,Haskell应用程序中不存在稳定的库安装——任何库都可能被拖拽下来,并根据已安装的全部库重新编译

这里的底线是缓存
.cabal/lib
目录对加快安装速度没有任何作用。依赖项的重新编译总是会发生。除了使用
hsenv
进行沙箱之外,最好的方法是在调用
cabal install
时指定全套依赖库。这样,可以提前计算依赖项,并且编译只应该发生一次

哈斯凯尔大师,如果我在这里说的任何话是错误的,请随时纠正我。我已经离开哈斯克尔圈几个月了,我知道阴谋集团/图书馆的问题最近受到了很多关注