我有a script每天部署一次Haskell程序。目前它确实:
cabal update
cabal install --only-dependencies
cabal configure
cabal build
确保它具有最新的包索引列表,升级project.cabal
中下限发生变化的任何依赖项,并构建代码。
但是,我真的想升级任何具有新版本的依赖项。
--upgrade-dependencies
,但拒绝升级任何内容,因为它会破坏现有的包。--force-reinstalls
结合使用,但它安装了template-haskell
的新版本(不是一个好主意),QuickCheck
等内容将不再编译。自动升级包的正确方法是什么?
答案 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
适用于较新版本。