<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>rpm on SOW</title>
    <link>https://sow.pgsty.com/tags/rpm/</link>
    <description>Recent content in rpm on SOW</description>
    <generator>Hugo</generator>
    <language>en</language>
    
    
    
      <lastBuildDate>Fri, 28 Aug 2026 18:32:04 +0800</lastBuildDate>
    
    
      <atom:link href="https://sow.pgsty.com/tags/rpm/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Download SOW</title>
        <link>https://sow.pgsty.com/download/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/download/</guid>
        <description>&lt;!-- The landing layout renders `data/landing/download/&lt;lang&gt;.yaml`, not this&#xA;     body. The paragraph below is the page&#39;s searchable text: OINK&#39;s offline&#xA;     index skips a page with no raw content, and this is a top-level navigation&#xA;     entry that readers look for by artifact name. --&gt;&#xA;&lt;p&gt;Install SOW from the Pigsty infra repository with &lt;code&gt;apt install sow&lt;/code&gt; or &lt;code&gt;dnf install sow&lt;/code&gt;,&#xA;from a pinned RPM or DEB package, from a &lt;code&gt;tar.gz&lt;/code&gt; archive for Linux or macOS on &lt;code&gt;amd64&lt;/code&gt;&#xA;and &lt;code&gt;arm64&lt;/code&gt;, or from a source build of a tagged release. Every route installs the same&#xA;self-contained executable, and every published artifact carries a SHA-256 digest listed&#xA;against &lt;code&gt;SHA256SUMS&lt;/code&gt;. After installing, run &lt;code&gt;sow version&lt;/code&gt; and &lt;code&gt;sow help&lt;/code&gt;, then point&#xA;&lt;code&gt;sow create&lt;/code&gt; at a directory of packages.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Why SOW Uses One Payload Tree per Repository</title>
        <link>https://sow.pgsty.com/blog/design/single-payload/</link>
        <pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/blog/design/single-payload/</guid>
        <description>&lt;p&gt;This decision was drafted on 2026-08-05 during the pre-v0.2 release design consolidation&#xA;and shipped in SOW v0.2.0 on 2026-08-08. It remains the layout contract in v0.3 and v0.4.&#xA;It records an architecture choice, not a blanket compatibility claim: protocol closure,&#xA;ordinary package clients, mirror tools, static hosting, and object storage are verified as&#xA;separate evidence layers.&lt;/p&gt;&#xA;&lt;h2 id=&#34;decision&#34;&gt;Decision&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Each SOW Repository owns one public tree:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d78f7449-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d78f7449-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;repository&amp;gt;/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pool/                         # canonical package bytes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  dists/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;lt;dist&amp;gt;/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;architecture&amp;gt;/           # protocol metadata only&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;A Package Object has one canonical payload path inside one Repository. Adding the same&#xA;object to several Dists or architecture views adds membership and metadata references; it&#xA;does not create another canonical package file.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Build a YUM Repository</title>
        <link>https://sow.pgsty.com/docs/tutorial/yum-repo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/tutorial/yum-repo/</guid>
        <description>&lt;p&gt;This tutorial creates a new Managed RPM repository. You need a writable&#xA;directory, and one or more RPM files.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-create-the-workspace&#34;&gt;1. Create the workspace&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-3f9e4bd7-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-3f9e4bd7-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /srv/sow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /srv/sow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sow init .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sow repo new pigsty&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sow dist new el9 --format rpm -r pigsty&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The Dist name is an identifier chosen by you. SOW does not infer an operating-system&#xA;release from &lt;code&gt;el9&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>sow create</title>
        <link>https://sow.pgsty.com/docs/command/create/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/command/create/</guid>
        <description>&lt;p&gt;&lt;code&gt;sow create&lt;/code&gt; turns a directory that already contains &lt;code&gt;.rpm&lt;/code&gt; and &lt;code&gt;.deb&lt;/code&gt; files into a flat repository&#xA;by writing indexes next to the packages. It is the whole of Plain mode: no &lt;code&gt;sow.yml&lt;/code&gt;, no SQLite, no&#xA;Workspace discovery. This page covers the one-pass scan contract, the &lt;code&gt;--pigsty&lt;/code&gt; completion gate,&#xA;and RPM signing with &lt;code&gt;--sign-with&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;synopsis&#34;&gt;Synopsis&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4090f8e0-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4090f8e0-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sow create [DIR] [-j N] [--pigsty] [-S KEY [--overwrite]] [-T DUR | -N] [--json]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;code&gt;DIR&lt;/code&gt; defaults to the current directory.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Installation</title>
        <link>https://sow.pgsty.com/docs/start/install/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/start/install/</guid>
        <description>&lt;p&gt;SOW is one executable: there is no service to enable and no runtime language environment.&#xA;Release builds target Linux and macOS on &lt;code&gt;amd64&lt;/code&gt; and &lt;code&gt;arm64&lt;/code&gt;; Linux also gets RPM and DEB&#xA;packages. Windows is not supported.&lt;/p&gt;&#xA;&lt;p&gt;Use the &lt;a href=&#34;https://sow.pgsty.com/download/&#34;&gt;Download page&lt;/a&gt; to select the archive or Linux package that matches&#xA;your operating system and architecture. It links each published artifact, its source tag,&#xA;and &lt;code&gt;SHA256SUMS&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;install-an-archive&#34;&gt;Install an archive&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Download one archive plus &lt;code&gt;SHA256SUMS&lt;/code&gt;, then verify the matching line before extraction:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Plain Flat Repositories</title>
        <link>https://sow.pgsty.com/docs/feature/plain/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/feature/plain/</guid>
        <description>&lt;p&gt;&lt;code&gt;sow create&lt;/code&gt; takes a directory that already contains &lt;code&gt;.rpm&lt;/code&gt; and &lt;code&gt;.deb&lt;/code&gt; files and writes flat repository indexes beside them. Plain mode has no workspace, configuration file, database, desired state, or operation journal. The package directory is the authority; every index is a disposable projection of its current contents.&lt;/p&gt;&#xA;&lt;p&gt;That distinction is intentional. Managed repositories retain state and recover transactions. Plain repositories are cheap to recreate: if a run fails or is interrupted, run the same command again and overwrite the derived metadata.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Quick Start</title>
        <link>https://sow.pgsty.com/docs/start/quickstart/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/start/quickstart/</guid>
        <description>&lt;p&gt;Plain mode builds a flat repository in one directory. It does not read &lt;code&gt;sow.yml&lt;/code&gt;, create&#xA;a workspace, or keep a database.&lt;/p&gt;&#xA;&lt;div class=&#34;td-steps td-max-width-on-larger-screens&#34;&gt;&#xA;&lt;h2 id=&#34;1-prepare-a-directory&#34;&gt;Prepare a directory&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Put RPM and/or DEB files at the directory top level. &lt;code&gt;sow create&lt;/code&gt; does not recurse and&#xA;does not move or rename package files.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-baa82ceb-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-baa82ceb-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /srv/repo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp /path/to/packages/*.rpm /path/to/packages/*.deb /srv/repo/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;If one glob has no matches, copy the formats you actually have instead.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Package References</title>
        <link>https://sow.pgsty.com/docs/reference/package-ref/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/reference/package-ref/</guid>
        <description>&lt;p&gt;&lt;code&gt;sow rm&lt;/code&gt;, &lt;code&gt;sow show&lt;/code&gt;, and &lt;code&gt;sow where&lt;/code&gt; all take a &lt;code&gt;PACKAGE&lt;/code&gt; argument. This page defines&#xA;what you may write there. The same grammar applies to all three commands; only the&#xA;handling of an ambiguous name differs.&lt;/p&gt;&#xA;&lt;p&gt;Nothing here applies to &lt;code&gt;sow add&lt;/code&gt;, which takes filesystem paths, not references.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-five-forms&#34;&gt;The five forms&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Form&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Example&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Matches&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Content digest&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;sha256:d06d7f23b9cf...b98b1229&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Exactly one package object&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;RPM coordinate&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;rpm:pev2-0:1.23.0-1.noarch&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Exactly one RPM&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;DEB coordinate&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;deb:libpq5=18.3-1.pgdg12+1:amd64&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Exactly one DEB&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Filename&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pev2-1.23.0-1.noarch.rpm&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The package stored under that filename&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Bare name&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pev2&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Every version and architecture of that name&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The first three are exact: they name one object and either hit it or fail. The last two&#xA;are conveniences that may match more than one object.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Pool &amp; Metadata Views</title>
        <link>https://sow.pgsty.com/docs/feature/views/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/feature/views/</guid>
        <description>&lt;h2 id=&#34;the-invariant&#34;&gt;The invariant&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Within one Repository, every live Package Object has one canonical payload path under&#xA;&lt;code&gt;pool/&lt;/code&gt;. Dists and architecture views own metadata, not aliases of package bytes:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2e61d7a1-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2e61d7a1-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;repo&amp;gt;/pool/...                              canonical package payloads&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;repo&amp;gt;/dists/&amp;lt;rpm-dist&amp;gt;/&amp;lt;arch&amp;gt;/repodata/... RPM metadata only&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;repo&amp;gt;/dists/&amp;lt;deb-dist&amp;gt;/main/binary-*/...   APT metadata only&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The same digest in another Repository or publication prefix is a separately owned object.&#xA;SOW deliberately does not turn local deduplication into shared distributed ownership.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Build the pigsty-infra Repository</title>
        <link>https://sow.pgsty.com/docs/tutorial/infra-repo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/tutorial/infra-repo/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://github.com/pgsty/infra-pkg&#34;&gt;&lt;code&gt;pgsty/infra-pkg&lt;/code&gt;&lt;/a&gt; is the upstream build source for Pigsty Infra packages.&#xA;This tutorial assumes the dual-architecture RPMs and DEBs already exist and covers the second half of the job: turning that pile of packages into a real, consumable, maintainable SOW repository named &lt;code&gt;infra&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-put-the-packages-under-repo&#34;&gt;1. Put the packages under ~/repo&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This tutorial uses the fixed path &lt;code&gt;~/repo&lt;/code&gt; throughout. Copy the existing packages into two input directories:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-df876e1d-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-df876e1d-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p ~/repo/packages/rpm ~/repo/packages/deb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp ~/pgsty/infra-pkg/dist/rpm/*.rpm ~/repo/packages/rpm/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp ~/pgsty/infra-pkg/dist/deb/*.deb ~/repo/packages/deb/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Confirm that all four format-by-architecture cells contain real payloads:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Signing Model</title>
        <link>https://sow.pgsty.com/docs/feature/signing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/feature/signing/</guid>
        <description>&lt;p&gt;There are two different questions a client can ask about a repository, and SOW answers them with two separate mechanisms. Confusing them is the most common source of &amp;ldquo;I signed it but &lt;code&gt;dnf&lt;/code&gt; still complains&amp;rdquo;, so this page starts by pulling them apart.&lt;/p&gt;&#xA;&lt;h2 id=&#34;two-independent-trust-chains&#34;&gt;Two independent trust chains&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Metadata signing&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;RPM package signing&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Question answered&lt;/td&gt;&#xA;      &lt;td&gt;&amp;ldquo;Is this index really from you, and unmodified?&amp;rdquo;&lt;/td&gt;&#xA;      &lt;td&gt;&amp;ldquo;Is this &lt;code&gt;.rpm&lt;/code&gt; file really from you?&amp;rdquo;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Configured by&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;signing.rpm.metadata&lt;/code&gt;, &lt;code&gt;signing.deb.metadata&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;signing.rpm.packages&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Produces&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;repodata/repomd.xml.asc&lt;/code&gt;, &lt;code&gt;InRelease&lt;/code&gt;, &lt;code&gt;Release.gpg&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;an OpenPGP signature embedded in the package&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Changes package bytes&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;yes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Client setting&lt;/td&gt;&#xA;      &lt;td&gt;dnf &lt;code&gt;repo_gpgcheck=1&lt;/code&gt;, apt &lt;code&gt;Signed-By&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;dnf &lt;code&gt;gpgcheck=1&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Available in Plain mode&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;yes, via &lt;code&gt;create -S KEY&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;They are configured separately and can be used separately. Metadata signing alone is usually the right starting point: it authenticates the whole index in one place and requires no change to the packages you received from upstream.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Platforms &amp; Integrations</title>
        <link>https://sow.pgsty.com/docs/reference/compatibility/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/reference/compatibility/</guid>
        <description>&lt;p&gt;This page defines the environments SOW ships for, the storage semantics it requires, and&#xA;the exact scope of its automated integrations. Repository generation happens inside the&#xA;SOW binary; a real package manager remains the final check for a deployed repository.&lt;/p&gt;&#xA;&lt;h2 id=&#34;release-targets&#34;&gt;Release targets&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Operating system&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: right&#34;&gt;&lt;code&gt;amd64&lt;/code&gt;&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: right&#34;&gt;&lt;code&gt;arm64&lt;/code&gt;&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Artifact&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Linux&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;yes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;yes&lt;/td&gt;&#xA;      &lt;td&gt;archive, RPM, DEB&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;macOS&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;yes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;yes&lt;/td&gt;&#xA;      &lt;td&gt;archive&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Windows&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;no&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;not supported&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Release binaries use &lt;code&gt;CGO_ENABLED=0&lt;/code&gt; and require no language runtime. The 0.4.0 artifacts were&#xA;built with Go 1.27.0; the source module requires Go 1.27.0 or newer. Archives include &lt;code&gt;README.md&lt;/code&gt;,&#xA;&lt;code&gt;CHANGELOG.md&lt;/code&gt;, and the Apache-2.0 &lt;code&gt;LICENSE&lt;/code&gt;;&#xA;Linux packages install the same license with the binary. Use &lt;a href=&#34;https://sow.pgsty.com/docs/command/&#34;&gt;&lt;code&gt;sow version&lt;/code&gt;&lt;/a&gt;&#xA;to print the product version, target OS/architecture, and build toolchain.&lt;/p&gt;</description>
      </item>
    <item>
        <title>sow export</title>
        <link>https://sow.pgsty.com/docs/command/export/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/command/export/</guid>
        <description>&lt;p&gt;SOW provides one export subcommand: &lt;code&gt;sow export rpm-leaf&lt;/code&gt;. It creates an external, standalone&#xA;RPM repository whose repodata uses local &lt;code&gt;pool/...&lt;/code&gt; hrefs.&lt;/p&gt;&#xA;&lt;h2 id=&#34;synopsis&#34;&gt;Synopsis&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-674f5314-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-674f5314-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sow export rpm-leaf DIST ARCH DIR [--hardlink] [-C|--workdir DIR] [-r|--repo NAME] [--json]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Argument&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Requirement&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;DIST&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Canonical configured RPM Dist name&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;ARCH&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;x86_64&lt;/code&gt; or &lt;code&gt;aarch64&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;DIR&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Absent or empty destination outside Repository, private-state, and filesystem-target roots&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Flag&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Meaning&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Default&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;--hardlink&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Use hard links for trusted, same-filesystem, read-only output&lt;/td&gt;&#xA;      &lt;td&gt;copy files&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;-C, --workdir DIR&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Workspace discovery start directory&lt;/td&gt;&#xA;      &lt;td&gt;current directory&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;-r, --repo NAME&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Select a Repository&lt;/td&gt;&#xA;      &lt;td&gt;selection rules&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;--json&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Emit the &lt;code&gt;sow.cli/v1&lt;/code&gt; envelope&lt;/td&gt;&#xA;      &lt;td&gt;false&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The command accepts no &lt;code&gt;--dist&lt;/code&gt;, jobs, timeout, or lock option.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
