---
title: "Package feeds"
---

# Package feeds

The build's package feed settings and deploy folders with each index's state, bitbake package-index, and packages installed, upgraded and removed on a board from the build's feed over SSH.

Images with `package-management` keep a package manager on the board. During development, rebuilt packages can go to a bench board from the build's own feed instead of a new image.

**State:** modelled with real opkg 0.6.3 on a BusyBox 1.36.1 stand-in board over OpenSSH 9.6p1 (install, upgrade, remove and a refusal by the solver through real SSH forwards), real `bitbake -e` (BitBake 2.8.1, poky scarthgap, meta-freescale), version order checked against `dpkg --compare-versions` on 441 pairs, and the running app. The ipk files and index were made in opkg-utils' layout, and `bitbake package-index` was not run. dnf and apt are read by the parsers only. Signed feeds, a real board and Windows were not tried.

## The build's feed

**Open Package Feed** reads from `bitbake -e`, each with the statement that decided it:

- PACKAGE_CLASSES, PACKAGE_FEED_URIS, PACKAGE_FEED_BASE_PATHS, PACKAGE_FEED_ARCHS and `package-management`;
- the feed lines do_rootfs writes into the image;
- the deploy folders (ipk, rpm, deb) with each index current, stale (a package newer than the index), missing or empty;
- the packages in the feed, with **Install on Target...** per package.

**Update Package Index (bitbake package-index)...** runs `bitbake package-index` after a confirmation.

## Packages on a board

In Targets, each board has a **Packages** group: the package manager (opkg, dnf and rpm, or apt and dpkg), its feeds, the installed packages, and the drift from the image manifest (**Compare Target Packages with Image...**). **Refresh Target Packages** reads it again.

**Install Package on Target from Build Feed...**, **Upgrade Package on Target from Build Feed...** and **Remove Package from Target...** ask where the board gets the packages from:

- **From the Build Host's Deploy Folder**: served by python3 `http.server` on the build host's loopback and forwarded over SSH to the board's loopback, so no port is opened on any network and the board's feed configuration is unchanged;
- **From an HTTP Server...**: the lab's feed server or one the board reaches itself;
- **From the Image's Own Feeds**: the feeds PACKAGE_FEED_URIS wrote into the image.

Each change is confirmed with the board, package, version, exact commands and feeds, and the board is read back afterwards. A refusal by the package manager shows its message.

**Export Target Package Record...** writes the board's packages as JSON.

## Agent tools

Two read-only tools and four that ask first.

Next: [Verified boot and file system integrity](https://neuralinverse.com/docs/modules/embedded-linux/verified-boot/).
