跳到主要内容

CEP 15 - 通过添加 base_url 属性分别托管 repodata.json 和软件包

标题通过添加 base_url 属性分别托管 repodata.json 和软件包
状态已接受
作者Daniel Holth <dholth@anaconda.com>
创建日期2023年8月24日
更新日期2024年1月22日
讨论https://github.com/conda-incubator/ceps/pull/61
实施

摘要

Conda 软件包需要与 repodata.json 存储在同一目录下。

当为同一组软件包使用替代的 repodata.json 时,这可能会带来不便。例如,用户可能对基于索引数据的旧快照安装软件包感兴趣,该快照指向来自原始索引的软件包。或者,用户可能希望根据策略对 repodata.json 进行子集化。

规范

一个最小的 repodata.json 看起来像这样。

{"info": {"subdir": "linux-64"},
"packages": {},
"packages.conda": {"some-package-filename.conda":{...}},
"removed": [],
"repodata_version": 1}

base_url 添加到 info 对象。增加 repodata_version

{"info": {"subdir": "...", "base_url":"https://repo.anaconda.com/repo/main/linux-64/"},
"packages": {},
"packages.conda": {"some-package-filename.conda":{...}},
"removed": [],
"repodata_version": 2}

在为软件包组合下载 URL 时,将 base_url 前置到软件包文件名。对于上面的示例,生成的下载 URL 将是 https://repo.anaconda.com/repo/main/linux-64/some-package.conda

base_url 可以是绝对或相对 URL。

在没有 base_url 的情况下,软件包相对于 repodata.json 加载。没有新 base_url 的索引数据将继续具有 "repodata_version": 1,但包含 base_url 的索引数据将具有 "repodata_version": 2

所有 CEP 均明确采用 CC0 1.0 Universal 许可。