使用 Cabal 升级包依赖

Upgrade package dependencies using Cabal

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

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

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

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

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

您可以使用 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

升级到 Cabal 2.0.0.0 或更高版本。

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

  • Made the 'template-haskell' package non-upgradable again (#4185).

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