Tutorials
These tutorials cover repository creation, signing, publication, and updates. Start with Installation if you have not installed SOW.
Replace the metadata generator for a flat RPM repository while preserving publication timestamps, signatures, and client caches.
Create RPM architecture views, filter packages, set version limits, and configure DNF.
Create a DEB pool with by-hash indexes and configure an APT client.
Sign metadata and RPM packages, then configure clients to verify signatures.
Publish to a filesystem target and serve it with Nginx.
Use both package formats and architectures, test installation, and maintain rolling channels, stable releases, and monthly snapshots.
Follow the examples
Run commands in order. Replace uppercase placeholders and /path/to/ inputs with your values. Examples under /srv require a writable directory; you can substitute a path under your home directory.
The YUM and APT tutorials each start with a new workspace. To combine them, create the second Dist in the existing pigsty Repository and keep both Dist definitions in sow.yml.
Each tutorial shows how to check its result. For a command error or interrupted operation, see Troubleshooting.
Build a YUM Repository
Create a managed RPM repository, apply membership policy, serve it, and configure dnf.
Migrate an Existing YUM Repository
Move a flat RPM repository to SOW while preserving client cache compatibility, package trust, and publication time.
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.