Skip to content

Tutorials

End-to-end walkthroughs that take a pile of packages all the way to a signed repository your clients can install from.

Each tutorial starts from a new workspace. Commands are intended to be run in order; replace uppercase placeholders and package paths for your environment.

If you have not installed SOW yet, start with Installation and Quick Start. The tutorials below cover the managed repository path.

A managed RPM repository with per-architecture views, noarch projection, debuginfo filtering, version limits, and a working dnf client configuration.

A managed DEB repository with a Debian-style pool, by-hash indexes, and a deb822 client configuration.

Generate a dedicated GPG key, sign repository metadata and RPM packages, and configure clients to reject anything unsigned.

Serve a Repository with Nginx and publish a verified Generation to a configured filesystem target without exposing private workspace state.

Turn existing dual-architecture infra-pkg RPMs and DEBs into a real repository, then rehearse local installation, rolling updates, Stable promotion, and monthly snapshots.

Which one first

Your situation Start here
You ship RPMs to dnf clients Build a YUM Repository
You ship DEBs for Debian or Ubuntu Build an APT Repository
You need signed metadata or signed RPM payloads Sign Your Repository
The tree is built but nothing can reach it Serve Repositories
You want to turn a dual-architecture package pool into a maintained Infra repository Build the pigsty-infra Repository

The YUM and APT tutorials are independent fresh-workspace paths. A real Workspace may hold both RPM and DEB Dists in one Repository when that ownership boundary suits your operation.

Conventions used here

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. sow check returning 0 proves the selected Repository is complete and matches the recorded Generation. A nonzero result is not a release artifact.

Build a YUM Repository

Create a managed RPM repository, apply membership policy, serve it, and configure dnf.

Build an APT Repository

Create a managed DEB repository with by-hash indexes and configure an APT client.

Sign Your Repository

Sign RPM and APT metadata, optionally sign RPM packages, and enable client verification.

Serve and Publish Repositories

Serve a public Repository with Nginx and publish verified Generations to a filesystem target.

Build the pigsty-infra Repository

Turn an existing dual-architecture RPM and DEB package pool into an infra repository, then validate installs, roll updates, promote to Stable, and take monthly snapshots.