Skip to content

SOW v0.2.0

SOW v0.2.0 introduced Plain and Managed RPM/DEB repositories, signing, publication, retained generations, and RPM leaf export.

SOW 0.2.0 introduced Plain and Managed workflows for RPM and DEB repositories. It builds static package repositories with one Go executable on Linux or macOS.

This page describes the 0.2.0 release. Use the current documentation for installation and operations today.

Build a flat repository

Plain mode indexes RPM and DEB files at the top level of a directory:

sow create /srv/repo

For RPMs, it writes repodata/. For DEBs, it writes Packages and Packages.gz. A mixed directory gets both. Plain mode uses the directory contents as its state and needs no workspace or database.

The release also added --sign-with to sign unsigned RPM packages. Use --overwrite to replace existing RPM signatures. Plain mode does not generate or sign an APT Release file.

Manage a repository over time

Managed mode records package membership and builds named Dists:

mkdir -p /srv/sow
cd /srv/sow
sow init .
sow repo new pigsty
sow dist new el9 --format rpm -r pigsty
sow add /path/to/packages/*.rpm -r pigsty -d el9
sow check -r pigsty

Each Repository stores a package file once under pool/. Its Dists contain RPM or APT metadata under dists/. Builds record generations so SOW can report changes and retain selected repository states.

Version 0.2.0 added:

  • sow/v3 configuration and package membership policies;
  • metadata signing for RPM and APT, plus RPM package signing;
  • status, check, changes, and operation logs;
  • recoverable publication to filesystem and R2 targets;
  • retained generations and local garbage collection;
  • rpm-leaf export for tools that need a standalone RPM directory.

Serve or publish the complete Repository tree so metadata can reach the shared package pool. sow publish manages upload order and recovery for configured targets. R2 cleanup reports candidates without deleting remote objects.

Release testing and source

The release added APT/DNF and S3-compatible integration workflows, plus a tag-driven GoReleaser pipeline for Linux/macOS archives and Linux RPM/DEB packages. Historical code and tests are available under the v0.2.0 source tag.

For the current release, use Download. Current client and storage coverage is listed in Platforms & Integrations.