gpt4 book ai didi

haskell - "cabal install ___"破坏以前安装的软件包

转载 作者:行者123 更新时间:2023-12-04 16:40:49 25 4
gpt4 key购买 nike

我找到 cabal安装软件包时的行为令人抓狂。例如,运行

cabal install funsat

安装旧版本 array , time , random , quickcheck , 和 bitset , 破包如 monadiccp , hoogle , heist , snap , 等等。

它可以返回并 cabal install monadiccp等,但如何避免阴谋破坏已安装软件包的默认行为?任何合理的 Linux 包管理器,例如 aptitudezypper在安装新软件包时,会问我是否要破坏已安装的软件包。

有人编写了解决方法脚本吗?提前致谢。

最佳答案

我推荐 cabal-dev ,它为您处理的每个项目维护一组单独的已安装包。这并不能解决通常 cabal-install 的不良行为,但意味着此类故障比其他情况更加孤立,并且允许您通过简单地执行 cabal-dev clean && cabal-dev install 更轻松地修复它们。 .

可重复构建的额外好处也很好。

诚然,这不是针对您的特定问题的解决方法,但它总体上减轻了 cabal 安装的痛苦。

基于 Daniel Fischer 的回答,这里是 cabal 的包装器如果要重新安装软件包,则会中止安装:

cabal () {
if [ "$1" = "install" ]; then
local out=$(command cabal --dry-run -v2 "$@" 2>&1)
if echo "$out" | egrep -c '\((reinstall|new version)\)' >/dev/null; then
echo "$out"
return 1
fi
fi
command cabal "$@"
}

YMMV;我只对此进行了轻微的测试,它会在启动时导致烦人的延迟,因为所有依赖项都必须计算两次。但是,如果您想保持安全,它应该会减轻一些乏味。

关于haskell - "cabal install ___"破坏以前安装的软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com