Build a YUM Repository
Create a managed RPM repository with per-architecture views, noise filtering, and a working dnf client configuration.
Each tutorial here is a complete journey: you start with nothing, run every command in order,
and finish with something a real dnf or apt client can use. Commands are copy-pasteable and
every output block is a real transcript.
If you have not installed SOW yet, start with Installation and Quick Start — those get you to a working flat repository in five minutes. The tutorials below pick up from there and build the production shape.
noarch projection, debuginfo filtering,
version limits, and a working dnf client configuration.by-hash indexes, and both deb822 and
legacy sources.list client configurations.| Your situation | Start here |
|---|---|
| You ship RPMs for EL8 / EL9 / EL10 | Build a YUM Repository |
| You ship DEBs for Debian or Ubuntu | Build an APT Repository |
| You have a repository and clients complain it is unsigned | Sign Your Repository |
| The tree is built but nothing can reach it | Serve Repositories |
You have a createrepo_c cron job or a reprepro database | Migration |
The YUM and APT tutorials share one workspace and are written to be followed in sequence — the APT tutorial adds a second Dist to the repository the YUM tutorial creates. You can also follow either one standalone; each states its own prerequisites.
Shell blocks contain commands without a $ prefix so you can copy a whole block at once.
Output appears in a separate block below the command, or as a comment when it is one line.
Where a command needs a value you must substitute, it appears in UPPERCASE.
Every tutorial ends with a verification step. If verification fails, do not continue — the next
step assumes the tree is in the state the previous one produced. sow check is the gate that
tells you the truth: exit code 0 means the tree is complete and ready to copy, exit code 5
means it is not.
Create a managed RPM repository with per-architecture views, noise filtering, and a working dnf client configuration.
Create a managed DEB repository with a Debian-style pool, by-hash indexes, and both deb822 and legacy client configurations.
Generate a dedicated GPG key, sign repository metadata and RPM packages, and configure clients to reject anything unsigned.
Publish a repository over HTTP with Nginx, preview it locally, and copy it to an air-gapped host without losing deduplication.
Take over an existing repository in place or move a reprepro archive into a workspace, with a real side-by-side of what changes.