主要观点:
- Pixi 采用新方法获取 repodata 可使许多复杂 conda 环境求解速度提升多达 50 倍,不仅加快日常使用还提升 CI 工作流效率,本文深入探讨技术细节。
- 介绍了获取 repodata 的不同方法及其优缺点,如仅存储最新版本、压缩、JLAP 等。
- 提出新的分片索引方法,将 repodata 拆分为索引和按包名划分的分片,能快速下载和处理,支持各种要求。
- 实现该方法并在 rattler 和 pixi 中进行测试,结果表明在热缓存和冷缓存情况下都显著优于先前方法,且在慢网络连接下更优。
- 提出 Conda Enhancement Proposal 希望被更广泛的 conda 生态系统接受,介绍在 pixi 中使用的方法及如何帮助推广。
关键信息:
- 常见 conda 频道如 conda-forge 规模大,
repodata.json
文件增长快。 - 先前方法如仅存储最新版本可减小文件大小但有局限性,压缩可减少下载大小但仍需定期下载,JLAP 可仅下载增量更新但处理大量 JSON 慢。
- 分片索引方法基于新包添加少更新包的特点,将
repodata.json
拆分为索引和分片,通过内容寻址可高效缓存,测试结果显示性能优异。 - 希望 CEP 被接受,介绍在 pixi 中使用的方式及如何帮助推广该方法。
重要细节:
repodata.json
文件包含渠道中所有包的信息,不同平台有不同大小。- 新方法中分片以内容寻址方式存储,索引编码包名与分片哈希及元数据,文件大小随唯一包名数量增长而非单个包。
- 测试在不同网络连接下比较新方法与其他方法的性能,新方法在各种情况下都表现出色。
- CEP 包含对 repodata 的改进,正在与 Anaconda 合作在
conda-index
中实现分片 repodata 创建。在 pixi 中使用只需将conda-forge
通道替换为https://prefix.dev/conda-forge
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。