<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>命令行参考 on SOW</title><link>https://sow.pgsty.com/zh/docs/reference/cli/</link><description>Recent content in 命令行参考 on SOW</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://sow.pgsty.com/zh/docs/reference/cli/index.xml" rel="self" type="application/rss+xml"/><item><title>sow create</title><link>https://sow.pgsty.com/zh/docs/reference/cli/create/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sow.pgsty.com/zh/docs/reference/cli/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）：在包旁边写出索引
文件。它就是 Plain 平面模式的全部——没有 &lt;code&gt;sow.yml&lt;/code&gt;、没有 SQLite、不做工作区发现。本页讲清扫描规则、
原子的 &lt;code&gt;--pigsty&lt;/code&gt; 兼容操作，以及 &lt;code&gt;--sign-with&lt;/code&gt; 的 RPM 包签名。&lt;/p&gt;</description></item><item><title>sow init</title><link>https://sow.pgsty.com/zh/docs/reference/cli/init/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sow.pgsty.com/zh/docs/reference/cli/init/</guid><description>&lt;p&gt;&lt;code&gt;sow init&lt;/code&gt; 创建根级 &lt;code&gt;sow.yml&lt;/code&gt; 与私有状态目录 &lt;code&gt;.sow/&lt;/code&gt;，这两样东西让一个目录成为工作区（Workspace）。
它同时也是手写配置的收敛命令：如果 &lt;code&gt;sow.yml&lt;/code&gt; 里已经声明了 Repository 与 Dist，&lt;code&gt;init&lt;/code&gt; 会把还不存在
的那些实体化出来，已完成的原样跳过。&lt;/p&gt;</description></item><item><title>sow config</title><link>https://sow.pgsty.com/zh/docs/reference/cli/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sow.pgsty.com/zh/docs/reference/cli/config/</guid><description>&lt;p&gt;&lt;code&gt;sow config&lt;/code&gt; 有两个只读子命令。&lt;code&gt;config check&lt;/code&gt; 是对 &lt;code&gt;sow.yml&lt;/code&gt; 的全量预检——每次手工改完配置以及在
CI 里都该跑一遍。&lt;code&gt;config show&lt;/code&gt; 打印 SOW 实际算出来的配置，用它确认默认值、继承的架构与规范化别名
是不是按你预期解析的。&lt;/p&gt;</description></item><item><title>sow repo</title><link>https://sow.pgsty.com/zh/docs/reference/cli/repo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sow.pgsty.com/zh/docs/reference/cli/repo/</guid><description>&lt;p&gt;一个仓库（Repository）独占一份 &lt;code&gt;pool/&lt;/code&gt;、一份 &lt;code&gt;dists/&lt;/code&gt;、一个 SQLite 数据库与一个私有状态目录。它是
锁、事务恢复、Generation 编号与 Changeset 的边界——跨仓库不去重，也不承诺跨仓库原子提交。
&lt;code&gt;sow repo&lt;/code&gt; 管理的就是这条边界。&lt;/p&gt;</description></item><item><title>sow dist</title><link>https://sow.pgsty.com/zh/docs/reference/cli/dist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sow.pgsty.com/zh/docs/reference/cli/dist/</guid><description>&lt;p&gt;Dist 是一个仓库内、单一格式（&lt;code&gt;rpm&lt;/code&gt; 或 &lt;code&gt;deb&lt;/code&gt;）的具名包集合。客户端指向的就是它。一个仓库可以同时拥有
RPM Dist 与 DEB Dist，两者共用一份 &lt;code&gt;pool/&lt;/code&gt;，但渲染进完全独立的 &lt;code&gt;dists/&lt;/code&gt; 子树。&lt;/p&gt;</description></item><item><title>sow add</title><link>https://sow.pgsty.com/zh/docs/reference/cli/add/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sow.pgsty.com/zh/docs/reference/cli/add/</guid><description>&lt;p&gt;&lt;code&gt;sow add&lt;/code&gt; 是主要的写入路径。它解析你指定的包，从包头推导格式与架构，执行 Dist 的成员策略，并且——
除非你加 &lt;code&gt;--skip&lt;/code&gt;——在返回前重建全部受影响的索引。命令退出码为 &lt;code&gt;0&lt;/code&gt; 时，客户端已经能看到新包了。&lt;/p&gt;</description></item><item><title>sow rm</title><link>https://sow.pgsty.com/zh/docs/reference/cli/rm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sow.pgsty.com/zh/docs/reference/cli/rm/</guid><description>&lt;p&gt;&lt;code&gt;sow rm&lt;/code&gt; 把包从你选定的 Dist 的期望成员集中拿掉，并默认立即重建受影响的索引。它绝不从 &lt;code&gt;pool/&lt;/code&gt; 删除
字节——成员关系与内容是两个概念，而且系统没有垃圾回收。&lt;/p&gt;
&lt;h2 id="语法"&gt;语法&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sow rm PACKAGE... [-c|--check] [--skip] [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | -N|--no-wait] [--json]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="参数"&gt;参数&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;参数&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
					&lt;th&gt;默认&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-c, --check&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;只预览：计算并打印方案，不写任何东西&lt;/td&gt;
					&lt;td&gt;关闭&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;--skip&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;只更新期望状态，不构建&lt;/td&gt;
					&lt;td&gt;关闭&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-j, --jobs N&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;并发 worker 数&lt;/td&gt;
					&lt;td&gt;逻辑 CPU 数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-C, --workdir DIR&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;工作区发现的起始目录&lt;/td&gt;
					&lt;td&gt;当前目录&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-r, --repo NAME&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;选择一个仓库&lt;/td&gt;
					&lt;td&gt;按选择规则&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-d, --dist NAME&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;选择一个 Dist；可重复&lt;/td&gt;
					&lt;td&gt;按选择规则&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-T, --timeout DUR&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;等待锁的最长时间；&lt;code&gt;0&lt;/code&gt; 无限等待&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;-N, --no-wait&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;锁被占用时立即失败&lt;/td&gt;
					&lt;td&gt;false&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;--json&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;输出版本化 JSON envelope&lt;/td&gt;
					&lt;td&gt;false&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;--check&lt;/code&gt; 与 &lt;code&gt;--skip&lt;/code&gt; 互斥：&lt;/p&gt;</description></item><item><title>sow ls / show / where</title><link>https://sow.pgsty.com/zh/docs/reference/cli/query/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sow.pgsty.com/zh/docs/reference/cli/query/</guid><description>&lt;p&gt;三条命令回答三个不同的问题。&lt;code&gt;ls&lt;/code&gt; 列出一个 Dist 应该包含什么，&lt;code&gt;show&lt;/code&gt; 详细查看某一个包对象，&lt;code&gt;where&lt;/code&gt;
找出哪些 Dist（跨仓库）在提供某个包。三者都是只读的，不取写锁，共用同一套 &lt;code&gt;--json&lt;/code&gt; envelope。&lt;/p&gt;</description></item><item><title>sow build / status / check / changes</title><link>https://sow.pgsty.com/zh/docs/reference/cli/build/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sow.pgsty.com/zh/docs/reference/cli/build/</guid><description>&lt;p&gt;一个概念一条命令。&lt;code&gt;status&lt;/code&gt; 是便宜的读，&lt;code&gt;check&lt;/code&gt; 是完整校验，&lt;code&gt;build&lt;/code&gt; 是唯一会改变公开树的命令，
&lt;code&gt;changes&lt;/code&gt; 给出两代之间的物理文件差分。四条放在一页，因为你几乎总是一起用它们。&lt;/p&gt;</description></item><item><title>sow log</title><link>https://sow.pgsty.com/zh/docs/reference/cli/log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sow.pgsty.com/zh/docs/reference/cli/log/</guid><description>&lt;p&gt;仓库内的每条写命令，都会&lt;em&gt;先&lt;/em&gt;在该仓库的 SQLite 中提交一条应用级 Operation，然后才产生任何外部文件
副作用。这条记录让崩溃恢复成为可能——而当 Operation 进入终态之后，同一条记录就是你的审计轨迹。
&lt;code&gt;sow log&lt;/code&gt; 读的就是它。&lt;/p&gt;</description></item></channel></rss>