Repositories (channels)
epkg uses channels to refer to a distribution and version (e.g. debian, ubuntu, alpine, fedora, openeuler, archlinux, conda). Each channel has a default version and one or more repos (e.g. main, community, extra). Mirrors are chosen automatically; the placeholder $mirror in index URLs is replaced by a mirror from assets/mirrors/mirrors.json.
List channels and repos
epkg repo list
Output is a table with columns:
- channel — Channel name (and possibly variant, e.g.
fedora/rpmfusion). - default version — Default distro version (e.g.
13,3.23,latest). - repos — Comma-separated repo names (e.g.
main,community,Everything). - index_url — Template for the index URL;
$mirror,$version,$arch,$repo(and sometimes$conda_arch,$conda_repofile,$app_version, etc.) are substituted.
Example (abbreviated):
--------------------------------------------------------------------------------------------------------------------------------------------
channel | default version | repos | index_url
--------------------------------------------------------------------------------------------------------------------------------------------
alpine | 3.23 | community,main | $mirror/v$version/$repo/$arch/APKINDEX.tar.gz
archlinux | latest | core,multilib,extra | $mirror/$repo/os/$arch/$repo.files.tar.gz
archlinux | latest | aur | https://aur.archlinux.org/packages-meta-ext-v1.json.gz
conda | latest | free,r,main,pro | $mirror/pkgs/$repo/$conda_arch/$conda_repofile
conda | latest | conda-forge,pytorch,MindSpore | $mirror/cloud/$repo/$conda_arch/$conda_repofile
debian | 13 | Official | $mirror/debian/dists/$version/Release
fedora | 43 | Everything | $mirror/releases/$version/$repo/$arch/os/repodata/repomd.xml
openeuler | 25.09 | update,EPOL/update/main,everything,EPOL/main | $mirror/openEuler-$VERSION/$repo/$arch/repodata/repomd.xml
ubuntu | 25.10 | Official | $mirror/dists/$version/Release
...
--------------------------------------------------------------------------------------------------------------------------------------------
Using a channel
When you create an environment with -c CHANNEL (e.g. epkg env create myenv -c alpine), that env is bound to that channel and its default version. Package operations (install, update, upgrade, list, search, info) then use the channel’s repos and mirrors.
Metadata is cached under ~/.cache/channels/ (user) or /opt/epkg/cache/channels/ (root). Use epkg update to refresh it.
Adding or changing channels
Common pre-defined channel definitions live in the epkg source tree (e.g. under sources/). To add or change a channel, you need to add or edit the corresponding source config and rebuild or redeploy epkg. The exact format is distribution-specific (YAML, repo definitions, etc.). See the repository and design-notes/repodata.md for details.