You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在另一台计算机上回退cabal update至指定Hackage状态

解决方案

任务1:查看机器B的Hackage索引状态

有两种可靠方式获取机器B当前使用的Hackage快照状态:

  1. 查看索引时间戳文件
    在机器B上执行以下命令,直接读取Hackage索引的更新时间:

    cat ~/.cabal/packages/hackage.haskell.org/timestamp
    

    输出格式类似 2024-05-20T12:34:56Z,这就是机器B当前依赖的Hackage快照时间点。

  2. 查看索引哈希值
    如果需要更精确的校验(避免时间戳可能的误差),可以读取索引文件的哈希:

    cat ~/.cabal/packages/hackage.haskell.org/00-index.tar.gz.hash
    

    输出是一串SHA256哈希值,代表该快照的唯一标识。

任务2:将机器A的Cabal索引同步至机器B的状态

拿到机器B的时间戳或哈希后,在机器A上执行对应命令强制同步到指定快照:

方式1:使用时间戳同步

将命令中的时间替换为机器B获取到的timestamp值:

cabal update --index-state='2024-05-20T12:34:56Z'

方式2:使用哈希值同步

如果时间戳不够精确,用机器B拿到的哈希值替换:

cabal update --index-state=sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

执行后,机器A的Cabal索引会同步到机器B的旧Hackage状态,之后编译项目时就能使用和B一致的包版本集合。

注意:Cabal 3.6+支持--index-state参数直接用于update命令,无需额外配置文件。如果后续需要固定这个状态,可以在项目的cabal.project文件中添加index-state: 2024-05-20T12:34:56Z,避免后续cabal update自动覆盖。

内容的提问来源于stack exchange,提问作者user855443

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:03:25