Skip to main content

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:

VariableDescription
AVOCADO_REPO_URLOverride the repository base URL
AVOCADO_RELEASEVEROverride 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.