<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>dist on SOW</title>
    <link>https://sow.pgsty.com/tags/dist/</link>
    <description>Recent content in dist 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/dist/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>System Model</title>
        <link>https://sow.pgsty.com/blog/design/model/</link>
        <pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/blog/design/model/</guid>
        <description>&lt;p&gt;The model is deliberately layered. Configuration expresses intent, the database records&#xA;owned state, and the public tree is a deterministic projection. None of those layers may&#xA;quietly become a substitute for another.&lt;/p&gt;&#xA;&lt;h2 id=&#34;object-hierarchy&#34;&gt;Object hierarchy&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4d6aec63-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;10&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4d6aec63-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;Workspace&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Repository&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Package Object&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Dist&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   │   └── Membership -&amp;gt; Package Object&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Desired state&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── Built Generation&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── Retained Generation references&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── Publication Target&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── Repository + provider + prefix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;workspace&#34;&gt;Workspace&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;A Workspace supplies discovery, configuration, and coordination. It owns &lt;code&gt;sow.yml&lt;/code&gt;, the&#xA;private &lt;code&gt;.sow/&lt;/code&gt; directory, and stable lock paths. It is not a package deduplication domain.&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>Build an APT Repository</title>
        <link>https://sow.pgsty.com/docs/tutorial/apt-repo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/tutorial/apt-repo/</guid>
        <description>&lt;p&gt;This tutorial creates a new Managed DEB repository. You need a writable&#xA;directory, and one or more DEB 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-35f1bee1-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-35f1bee1-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 trixie --format deb -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 becomes the APT suite. It is an identifier chosen by you; SOW does not infer&#xA;distribution semantics from &lt;code&gt;trixie&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Your First Workspace</title>
        <link>https://sow.pgsty.com/docs/start/workspace/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/start/workspace/</guid>
        <description>&lt;p&gt;Managed mode keeps configuration, membership, generations, and audit state. This example&#xA;starts from an empty directory.&lt;/p&gt;&#xA;&lt;div class=&#34;td-steps td-max-width-on-larger-screens&#34;&gt;&#xA;&lt;h2 id=&#34;1-initialize-the-workspace&#34;&gt;Initialize the workspace&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b6b3b1e6-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-b6b3b1e6-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;sow init /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&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;init&lt;/code&gt; creates:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b6b3b1e6-fence-1&#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-b6b3b1e6-fence-1-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;/srv/sow/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── sow.yml   # configuration; schema: sow/v3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── .sow/     # SQLite state, locks, staging, recovery, journals&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;Do not edit or serve &lt;code&gt;.sow/&lt;/code&gt;. &lt;code&gt;init&lt;/code&gt; is idempotent: rerunning it validates and converges&#xA;declared repositories and Dists; it does not reset a valid workspace.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Managed Workspaces</title>
        <link>https://sow.pgsty.com/docs/feature/managed/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/feature/managed/</guid>
        <description>&lt;p&gt;Managed mode is what you use when the same repository will be updated for months: packages arrive in batches, policy decides what stays, and you need to prove afterwards what changed and when. This page explains the three-tier model, the layout it produces, and how commands figure out which repository and which Dist you meant.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-three-tiers&#34;&gt;The three tiers&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-01e8acae-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-01e8acae-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;Workspace                          discovery and configuration boundary&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── Repository                     ownership boundary: pool, dists, SQLite, lock, generations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── Dist                       a named membership set in exactly one format&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        └── Architecture View      a rendered projection — not a membership&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;Each tier has one job, and the boundaries are strict:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Core Concepts</title>
        <link>https://sow.pgsty.com/docs/start/concepts/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/start/concepts/</guid>
        <description>&lt;h2 id=&#34;plain-or-managed&#34;&gt;Plain or Managed&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The two execution paths are separate.&lt;/p&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;Plain&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Managed&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Entry point&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;sow create DIR&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;init&lt;/code&gt;, &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;dist&lt;/code&gt;, &lt;code&gt;add&lt;/code&gt;, &lt;code&gt;rm&lt;/code&gt;, &lt;code&gt;build&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;State&lt;/td&gt;&#xA;      &lt;td&gt;package directory&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;sow.yml&lt;/code&gt; plus private SQLite/journals&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Public layout&lt;/td&gt;&#xA;      &lt;td&gt;flat RPM/DEB indexes&lt;/td&gt;&#xA;      &lt;td&gt;Repository &lt;code&gt;pool/ + dists/&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Formats&lt;/td&gt;&#xA;      &lt;td&gt;RPM and DEB may share one directory&lt;/td&gt;&#xA;      &lt;td&gt;one format per Dist&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Architecture views&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;Policy and audit&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;Metadata signing and publication targets&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;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Choose Plain when directory contents already equal the desired repository. Choose Managed&#xA;when SOW must own membership, policy, generations, signing, audit, or publication.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Repository Layout</title>
        <link>https://sow.pgsty.com/docs/reference/layout/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/reference/layout/</guid>
        <description>&lt;p&gt;SOW has one fixed Managed layout: package payloads live once under &lt;code&gt;pool/&lt;/code&gt;, while&#xA;&lt;code&gt;dists/&lt;/code&gt; contains metadata-only client views. The complete repository directory is the&#xA;unit to serve, copy, or publish.&lt;/p&gt;&#xA;&lt;h2 id=&#34;plain-mode&#34;&gt;Plain mode&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;sow create&lt;/code&gt; writes indexes next to existing packages and leaves every unrelated file&#xA;unchanged:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-38ea1027-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-38ea1027-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;/srv/offline/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── blackbox_exporter-0.28.0-1.x86_64.rpm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── libpq5_18.3-1.pgdg12+1_amd64.deb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── repodata/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── &amp;lt;sha256&amp;gt;-primary.xml.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── &amp;lt;sha256&amp;gt;-filelists.xml.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── &amp;lt;sha256&amp;gt;-other.xml.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── repomd.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Packages&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Packages.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── repo_complete                         # only with --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;Flat RPM metadata uses a bare package basename; flat DEB metadata uses &lt;code&gt;./&amp;lt;filename&amp;gt;&lt;/code&gt;.&#xA;While a build is active, &lt;code&gt;.sow-plain-stage-*&lt;/code&gt; contains private generated output. Plain has no&#xA;durable journal or recovery state; a later create discards stale reserved temporary paths and&#xA;rebuilds. Never serve or copy those temporary paths.&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>sow dist</title>
        <link>https://sow.pgsty.com/docs/command/dist/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/docs/command/dist/</guid>
        <description>&lt;p&gt;A Dist is a named set of packages in exactly one format (&lt;code&gt;rpm&lt;/code&gt; or &lt;code&gt;deb&lt;/code&gt;) inside one Repository. It is&#xA;what a client points at. A Repository can hold RPM and DEB Dists side by side; they share one &lt;code&gt;pool/&lt;/code&gt;&#xA;but render into completely separate &lt;code&gt;dists/&lt;/code&gt; subtrees.&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-33168ed5-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-33168ed5-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 dist ls [-C DIR] [-r NAME] [--json]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sow dist new NAME --format rpm|deb [-C DIR] [-r NAME] [-T DUR | -N] [--json]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sow dist show NAME [-C DIR] [-r NAME] [--json]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sow dist rm NAME [-f|--force] [-C DIR] [-r NAME] [-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;h2 id=&#34;naming&#34;&gt;Naming&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Dist names follow the same rule as Repository names: &lt;code&gt;[a-z0-9][a-z0-9._-]*&lt;/code&gt;, excluding &lt;code&gt;.&lt;/code&gt;, &lt;code&gt;..&lt;/code&gt;,&#xA;&lt;code&gt;.sow&lt;/code&gt;, &lt;code&gt;pool&lt;/code&gt; and &lt;code&gt;dists&lt;/code&gt;.&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>
