堆栈将包保存在其缓存中多长时间?

How long does stack keep the packages in its cache?

我正在使用精益定理证明器,我想构建类似于堆栈的功能并开始构建库缓存。我不确定的一件事是何时删除缓存中的旧包。我可以认为,如果我安装了两个版本的 Lean,比如 3.3.0 和 3.3.1,我可以主张保留所有适用于这些版本的软件包的所有版本。由于精益语法发展迅速,因此限制性很强。

另一方面,我可以看到只保留任何给定包的 10 个版本。这可能是 10 个最新版本或 10 个最近请求的版本。

我很想知道在构建 stack 和相关工具时考虑的一些想法。

stack 将包 永久 保存在缓存中。或者直到您手动删除这些包。 stack 中没有实现快照垃圾回收。所以只能手动调用

rm -rf ~/.stack

删除整个堆栈缓存。通常,定期执行此操作以删除积累了一段时间的过时软件包是一种很好的做法。但如果您手动更改它,请务必备份 .stack/global-project/stack.yaml

stack 为您处理缓存删除的命令正在开发中:

https://github.com/commercialhaskell/stack/issues/133