CEP 15 - Hosting repodata.json
and packages separately by adding a base_url
property
Title | Hosting repodata.json and packages separately by adding a base_url property |
Status | Accepted |
Author(s) | Daniel Holth <dholth@anaconda.com> |
Created | Aug 24, 2023 |
Updated | Jan 22, 2024 |
Discussion | https://github.com/conda-incubator/ceps/pull/61 |
Implementation |
Abstract
Conda packages need to be stored in the same directory as repodata.json
.
This can be inconvenient especially when using alternative repodata.json
for
the same set of packages. For example, a user might be interested in installing
packages based on an older snapshot of the index data that points to packages
from the original index. Or a user might want to subset repodata.json
based on
policy.
Specification
A minimal repodata.json
looks like this.
{"info": {"subdir": "linux-64"},
"packages": {},
"packages.conda": {"some-package-filename.conda":{...}},
"removed": [],
"repodata_version": 1}
Add base_url
to the info
object. Increment 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}
Prepend base_url
to the package filename when composing a download URL for a package.
For the example above the resulting download URL would be https://repo.anaconda.com/repo/main/linux-64/some-package.conda
.
base_url
can be an absolute or a relative URL.
In the absence of base_url
, packages are loaded relative to the
repodata.json
. Index data without the new base_url
will continue to have
"repodata_version": 1
, but index data including base_url
will have
"repodata_version": 2
.
Copyright
All CEPs are explicitly CC0 1.0 Universal.