Package Feeds
Avocado OS maintains RPM package feeds hosted at https://repo.avocadolinux.org. These feeds provide pre-built packages for your target architecture, including system libraries, development tools, language runtimes, and more.
The feeds are organized by release and channel (e.g., 2026/edge) and include separate repositories for:
- SDK packages — tools and libraries for the build environment
- Target packages — packages installable into runtimes and extensions on your target hardware
Searching for Packages
Use the avocado sdk dnf command to search the available package feeds:
avocado sdk dnf search <query>
For example, to find Python-related packages:
avocado sdk dnf search python
To list all available packages:
avocado sdk dnf list
To list packages currently installed in the SDK:
avocado sdk dnf list installed
Installing Packages into Runtimes
To install packages into a specific runtime, use avocado runtime dnf:
avocado runtime dnf -r <runtime> install <package>
For example, to install gcc and make into the dev runtime:
avocado runtime dnf -r dev install gcc make
You can also search and list packages scoped to a runtime:
avocado runtime dnf -r dev search python
avocado runtime dnf -r dev list installed
Installing Packages into Extensions
Extensions have their own isolated sysroot. Use avocado ext dnf to manage packages within an extension:
avocado ext dnf -e <extension> install <package>
avocado ext dnf -e <extension> search <query>
Configuring the Feed
By default, packages are fetched from https://repo.avocadolinux.org using the release and channel defined in your avocado.yaml:
distro:
release: 2026
channel: edge
To override the repository URL or release version, use the distro.repo section:
distro:
release: 2026
channel: edge
repo:
url: 'https://custom-repo.example.com'
releasever: '2026-custom'
You can also override these values with environment variables:
| Variable | Description |
|---|---|
AVOCADO_REPO_URL | Override the repository base URL |
AVOCADO_RELEASEVER | Override the release version |
Additional Feeds
distro.feeds lists the feeds a project enables, in priority order: the first entry wins when two feeds carry the same package, and the distro feed comes first unless you place it yourself. A name defined under repos: is your own feed (url:, path: or org:):
distro:
release: 2026
channel: edge
feeds:
- my-mirror
- ros2-jazzy
repos:
my-mirror:
url: 'https://rpm.example.com/$target'
A name repos: does not define is an add-on feed the distro feed publishes, such as ros2-jazzy above. It needs no URL: it enables the add-on's target repo (target/<target>-<name>, for target installs and the SDK's target sysroot) and its SDK repo (sdk/<target>-<name>, for the SDK host) off the distro feed's base URL, releasever and TLS settings. List the add-on once; <name>-sdk, ext and <name>-ext are not add-on names.
Before anything is written to the lock, the CLI checks the name against the channel's targets.json and refuses one the target does not publish, suggesting the nearest published name, the add-ons the target does publish, and the other targets that carry it. A name close to one repos: defines is refused as a typo. If targets.json cannot be read, the CLI warns and lets dnf report what is missing.
Additional DNF Options
Pass additional flags to DNF using --dnf-arg:
avocado sdk dnf --dnf-arg --nogpgcheck search python
Pass arguments to the container runtime using --container-arg:
avocado sdk dnf --container-arg --cap-add=SYS_ADMIN search python
For the full list of options, see the avocado sdk dnf command reference.