使用Cabal升级包依赖项

时间:2018-06-06 20:26:12

标签: haskell cabal cabal-install

我有a script每天部署一次Haskell程序。目前它确实:

cabal update
cabal install --only-dependencies
cabal configure
cabal build

确保它具有最新的包索引列表,升级project.cabal中下限发生变化的任何依赖项,并构建代码。

但是,我真的想升级任何具有新版本的依赖项。

  • 我尝试添加--upgrade-dependencies,但拒绝升级任何内容,因为它会破坏现有的包。
  • 我尝试将其与--force-reinstalls结合使用,但它安装了template-haskell的新版本(不是一个好主意),QuickCheck等内容将不再编译。

自动升级包的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用cabal new-build,如果您只想升级大多数依赖项,请在cabal.project.freeze文件中冻结您希望保持不变的数量。

cat <<EOF >cabal.project.freeze
constraints: template-haskell == 2.13.0.0
EOF

cabal update
# Perhaps rm -rf dist-newstyle if you want a completely fresh build
cabal new-build --upgrade-dependencies

答案 1 :(得分:1)

升级至Cabal 2.0.0.0或更高版本。

根据the changelog,从Cabal 2.0.0.0开始,它不再升级template-haskell

  
      
  • 使'template-haskell'软件包再次无法升级(#4185)。
  •   

因此--upgrade-dependencies --force-reinstalls适用于较新版本。

相关问题