<?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/zh/tags/rpm/</link>
    <description>Recent content in rpm on SOW</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    
    
    
      <lastBuildDate>Fri, 28 Aug 2026 18:32:04 +0800</lastBuildDate>
    
    
      <atom:link href="https://sow.pgsty.com/zh/tags/rpm/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>下载 SOW</title>
        <link>https://sow.pgsty.com/zh/download/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/download/</guid>
        <description>&lt;!-- landing 布局渲染的是 `data/landing/download/&lt;lang&gt;.yaml`，而不是这段正文。&#xA;     下面这段是本页的可检索文本：OINK 的离线索引会跳过没有正文的页面，而这里是&#xA;     读者会按制品名称查找的顶级导航入口。 --&gt;&#xA;&lt;p&gt;可以用 &lt;code&gt;apt install sow&lt;/code&gt; 或 &lt;code&gt;dnf install sow&lt;/code&gt; 从 Pigsty infra 软件源安装 SOW，也可以使用&#xA;固定版本的 RPM / DEB 安装包、面向 Linux 与 macOS（&lt;code&gt;amd64&lt;/code&gt; 与 &lt;code&gt;arm64&lt;/code&gt;）的 &lt;code&gt;tar.gz&lt;/code&gt; 归档，&#xA;或者从某个 Tag 的源码自行构建。每条路径安装的都是同一个自包含可执行文件；每个已发布制品&#xA;都在 &lt;code&gt;SHA256SUMS&lt;/code&gt; 中列出 SHA-256 摘要。安装完成后执行 &lt;code&gt;sow version&lt;/code&gt; 与 &lt;code&gt;sow help&lt;/code&gt;，&#xA;然后把 &lt;code&gt;sow create&lt;/code&gt; 指向一个存放软件包的目录。&lt;/p&gt;</description>
      </item>
    <item>
        <title>为什么 SOW 每个仓库只保留一棵包体树</title>
        <link>https://sow.pgsty.com/zh/blog/design/single-payload/</link>
        <pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/blog/design/single-payload/</guid>
        <description>&lt;p&gt;这项决策起草于 2026-08-05 的 v0.2 发布前设计收敛阶段，并在 2026-08-08 随 SOW v0.2.0&#xA;正式交付，随后延续为 v0.3 与 v0.4 的布局契约。它记录的是架构选择，不是笼统的兼容性&#xA;PASS：协议闭包、普通软件包客户端、镜像工具、静态托管与对象存储始终属于彼此独立的证据层。&lt;/p&gt;</description>
      </item>
    <item>
        <title>sow create</title>
        <link>https://sow.pgsty.com/zh/docs/command/create/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/docs/command/create/</guid>
        <description>&lt;p&gt;&lt;code&gt;sow create&lt;/code&gt; 把一个已经放着 &lt;code&gt;.rpm&lt;/code&gt; / &lt;code&gt;.deb&lt;/code&gt; 的目录变成平面仓库（flat repository）：在包旁边写出索引&#xA;文件。它就是 Plain 平面模式的全部——没有 &lt;code&gt;sow.yml&lt;/code&gt;、没有 SQLite、不做工作区发现。本页讲清单遍扫描&#xA;契约、&lt;code&gt;--pigsty&lt;/code&gt; 完成门禁，以及 &lt;code&gt;--sign-with&lt;/code&gt; 的 RPM 包签名。&lt;/p&gt;</description>
      </item>
    <item>
        <title>安装</title>
        <link>https://sow.pgsty.com/zh/docs/start/install/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/docs/start/install/</guid>
        <description>&lt;p&gt;SOW 只有一个可执行文件，不需要启用服务，也不依赖语言运行时。Release 构建目标是 Linux 与&#xA;macOS 的 &lt;code&gt;amd64&lt;/code&gt;、&lt;code&gt;arm64&lt;/code&gt;；Linux 另外提供 RPM 与 DEB 安装包。不支持 Windows。&lt;/p&gt;</description>
      </item>
    <item>
        <title>搭建 YUM 仓库</title>
        <link>https://sow.pgsty.com/zh/docs/tutorial/yum-repo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/docs/tutorial/yum-repo/</guid>
        <description>&lt;p&gt;本教程从零创建一个 Managed RPM 仓库。你需要一个可写目录，以及一个或多个&#xA;RPM 文件。&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-创建工作区&#34;&gt;1. 创建工作区&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-145a5e51-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-145a5e51-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;Dist 名称由你定义。SOW 不会根据 &lt;code&gt;el9&lt;/code&gt; 推断操作系统版本。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Plain 平面仓库</title>
        <link>https://sow.pgsty.com/zh/docs/feature/plain/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/docs/feature/plain/</guid>
        <description>&lt;p&gt;&lt;code&gt;sow create&lt;/code&gt; 接手一个已经放着 &lt;code&gt;.rpm&lt;/code&gt; / &lt;code&gt;.deb&lt;/code&gt; 的目录，在包旁边生成平面仓库索引。Plain 模式没有工作区、配置文件、数据库、期望状态，也没有操作 journal。包目录就是权威事实来源，所有索引都是当前目录内容的可丢弃投影。&lt;/p&gt;</description>
      </item>
    <item>
        <title>快速上手</title>
        <link>https://sow.pgsty.com/zh/docs/start/quickstart/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/docs/start/quickstart/</guid>
        <description>&lt;p&gt;Plain 模式在一个目录内生成平面仓库。它不读取 &lt;code&gt;sow.yml&lt;/code&gt;，不创建工作区，也不维护数据库。&lt;/p&gt;&#xA;&lt;div class=&#34;td-steps td-max-width-on-larger-screens&#34;&gt;&#xA;&lt;h2 id=&#34;1-准备目录&#34;&gt;准备目录&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;把 RPM 和/或 DEB 文件放在目录顶层。&lt;code&gt;sow create&lt;/code&gt; 不递归扫描，也不移动或改名包文件。&lt;/p&gt;</description>
      </item>
    <item>
        <title>包引用</title>
        <link>https://sow.pgsty.com/zh/docs/reference/package-ref/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/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;、&lt;code&gt;sow where&lt;/code&gt; 都接受一个 &lt;code&gt;PACKAGE&lt;/code&gt; 参数。本页定义你能在那里写什么。&#xA;三条命令共用同一套文法,只有对 &lt;strong&gt;歧义名称&lt;/strong&gt; 的处理不同。&lt;/p&gt;&#xA;&lt;p&gt;这里的内容与 &lt;code&gt;sow add&lt;/code&gt; 无关 —— &lt;code&gt;add&lt;/code&gt; 接受的是文件系统路径,不是包引用。&lt;/p&gt;</description>
      </item>
    <item>
        <title>包池与元数据视图</title>
        <link>https://sow.pgsty.com/zh/docs/feature/views/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/docs/feature/views/</guid>
        <description>&lt;h2 id=&#34;不变式&#34;&gt;不变式&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在一个 Repository 内，每个 live Package Object 在 &lt;code&gt;pool/&lt;/code&gt; 下只有一条正典 payload 路径。&#xA;Dist 与架构 view 拥有元数据，不拥有包体 alias：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9cd48402-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-9cd48402-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/...                              正典包体&#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 元数据&#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 元数据&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;相同 digest 出现在另一个 Repository 或发布 prefix 时，仍是另一个 owner 下的独立对象。&#xA;SOW 不会为了本地去重而制造共享的分布式所有权。&lt;/p&gt;</description>
      </item>
    <item>
        <title>演练构建 pigsty-infra 仓库</title>
        <link>https://sow.pgsty.com/zh/docs/tutorial/infra-repo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/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; 是 Pigsty Infra 软件包的上游构建源码。&#xA;本教程假设双架构 RPM 与 DEB 已经构建完成，只处理后半程：从一堆包开始，用 SOW 建成真正可消费、可维护的 &lt;code&gt;infra&lt;/code&gt; 仓库。&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-把包集中到-repo&#34;&gt;1. 把包集中到 ~/repo&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;本教程固定使用 &lt;code&gt;~/repo&lt;/code&gt;，不再为每条路径定义环境变量。先把已有包复制进两个输入目录：&lt;/p&gt;</description>
      </item>
    <item>
        <title>签名模型</title>
        <link>https://sow.pgsty.com/zh/docs/feature/signing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/docs/feature/signing/</guid>
        <description>&lt;p&gt;客户端会对一个仓库提两个不同的问题,SOW 用两套彼此独立的机制分别回答。把它们混为一谈,是&amp;quot;我明明签了名,&lt;code&gt;dnf&lt;/code&gt; 还是报错&amp;quot;这类问题最常见的来源 —— 所以本页先把两者拆开。&lt;/p&gt;</description>
      </item>
    <item>
        <title>平台与集成</title>
        <link>https://sow.pgsty.com/zh/docs/reference/compatibility/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/docs/reference/compatibility/</guid>
        <description>&lt;p&gt;本页说明 SOW 提供哪些构建目标、工作区依赖什么存储语义，以及自动化集成具体覆盖哪些行为。&#xA;仓库生成在 SOW 二进制内部完成；部署后的最终门禁仍是实际软件包管理器。&lt;/p&gt;</description>
      </item>
    <item>
        <title>sow export</title>
        <link>https://sow.pgsty.com/zh/docs/command/export/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://sow.pgsty.com/zh/docs/command/export/</guid>
        <description>&lt;p&gt;SOW 提供一个导出子命令：&lt;code&gt;sow export rpm-leaf&lt;/code&gt;。它创建外部、独立的 RPM 仓库，&#xA;repodata 使用本地 &lt;code&gt;pool/...&lt;/code&gt; href。&lt;/p&gt;&#xA;&lt;h2 id=&#34;语法&#34;&gt;语法&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d279399d-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-d279399d-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;参数&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;要求&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;已配置的规范 RPM Dist 名称&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; 或 &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;不存在或为空，且不与 Repository、私有状态、filesystem 目标根重叠的目录&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;选项&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;含义&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;默认值&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;对可信、同文件系统、只读目标使用硬链接&lt;/td&gt;&#xA;      &lt;td&gt;复制文件&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;工作区发现起点&lt;/td&gt;&#xA;      &lt;td&gt;当前目录&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;选择 Repository&lt;/td&gt;&#xA;      &lt;td&gt;选择规则&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;输出 &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;该命令不接受 &lt;code&gt;--dist&lt;/code&gt;、jobs、timeout 或锁参数。&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
