跳转到主要内容

标签: cli

  • sow log

    发布于 命令

    Commandcliaudit

    仓库内的每条写命令,都会先在该仓库的 SQLite 中提交一条应用级 Operation,然后才产生任何外部文件 副作用。这条记录让崩溃恢复成为可能——而当 Operation 进入终态之后,同一条记录就是你的审计轨迹。 sow log 读的就是它。 语法 sow log [OPERATION] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME] [--json] sow log export [FILE] [-C|--workdir …

    仓库内的每条写命令,都会先在该仓库的 SQLite 中提交一条应用级 Operation,然后才产生任何外部文件 副作用。这条记录让崩溃恢复成为可能——而当 Operation 进入终态之后,同一条记录就是你的审计轨迹。 sow log 读的就是它。 语法 sow log [OPERATION] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME] [--json] sow log export [FILE] [-C|--workdir …

  • sow export

    发布于 命令

    Commandclirpmdist

    SOW 提供一个导出子命令:sow export rpm-leaf。它创建外部、独立的 RPM 仓库, repodata 使用本地 pool/... href。 语法 sow export rpm-leaf DIST ARCH DIR [--hardlink] [-C|--workdir DIR] [-r|--repo NAME] [--json] 参数 要求 DIST 已配置的规范 RPM Dist 名称 ARCH x86_64 或 aarch64 DIR 不存在或为空,且不与 …

    SOW 提供一个导出子命令:sow export rpm-leaf。它创建外部、独立的 RPM 仓库, repodata 使用本地 pool/... href。 语法 sow export rpm-leaf DIST ARCH DIR [--hardlink] [-C|--workdir DIR] [-r|--repo NAME] [--json] 参数 要求 DIST 已配置的规范 RPM Dist 名称 ARCH x86_64 或 aarch64 DIR 不存在或为空,且不与 …

  • sow gc

    发布于 命令

    Commandcligcretentionpublish

    sow gc 有两种严格分离的模式:不带位置目标时,回收本地不可达包体;带 TARGET 时,维护一个 已配置发布目标。 语法 sow gc [-C|--workdir DIR] [-r|--repo NAME] [-T|--timeout DUR | -N|--no-wait] [--json] sow gc TARGET [-C|--workdir DIR] [-T|--timeout DUR | -N|--no-wait] [--json] 参数 含义 默认值 -C, --workdir …

    sow gc 有两种严格分离的模式:不带位置目标时,回收本地不可达包体;带 TARGET 时,维护一个 已配置发布目标。 语法 sow gc [-C|--workdir DIR] [-r|--repo NAME] [-T|--timeout DUR | -N|--no-wait] [--json] sow gc TARGET [-C|--workdir DIR] [-T|--timeout DUR | -N|--no-wait] [--json] 参数 含义 默认值 -C, --workdir …

  • sow retain

    发布于 命令

    Commandcliretentiongeneration

    sow retain 管理显式的本地 Generation 根。retain add 只能冻结当前 Built Generation;后续 构建使它成为历史版本后,该代所需的软件包体仍受保护。 语法 sow retain add GENERATION [-C|--workdir DIR] [-r|--repo NAME] [-T|--timeout DUR | -N|--no-wait] [--json] sow retain ls [-C|--workdir DIR] [-r|--repo …

    sow retain 管理显式的本地 Generation 根。retain add 只能冻结当前 Built Generation;后续 构建使它成为历史版本后,该代所需的软件包体仍受保护。 语法 sow retain add GENERATION [-C|--workdir DIR] [-r|--repo NAME] [-T|--timeout DUR | -N|--no-wait] [--json] sow retain ls [-C|--workdir DIR] [-r|--repo …

  • sow publish

    发布于 命令

    Commandclipublishobject-storagefilesystem

    sow publish 将某个 Repository 的当前 Built Generation 交付到 sow.yml 的 targets: 中指定的 目标。目标已经绑定 Repository 与 Provider,因此命令不接受 --repo 或 --dist。 语法 sow publish TARGET [--abort | --rebind] [-C|--workdir DIR] [-T|--timeout DUR | -N|--no-wait] [--json] 参数 含义 默认值 …

    sow publish 将某个 Repository 的当前 Built Generation 交付到 sow.yml 的 targets: 中指定的 目标。目标已经绑定 Repository 与 Provider,因此命令不接受 --repo 或 --dist。 语法 sow publish TARGET [--abort | --rebind] [-C|--workdir DIR] [-T|--timeout DUR | -N|--no-wait] [--json] 参数 含义 默认值 …

  • sow changes

    发布于 命令

    Commandclipublishgeneration

    sow changes 比较 Built Generation,输出物理的 Repository 相对文件差异。它不显示尚未构建的 Desired 变化,也不是远端事务协议。 语法 sow changes [BASE_GENERATION] [-C|--workdir DIR] [-r|--repo NAME] [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择 Repository 选择规则 --json 输 …

    sow changes 比较 Built Generation,输出物理的 Repository 相对文件差异。它不显示尚未构建的 Desired 变化,也不是远端事务协议。 语法 sow changes [BASE_GENERATION] [-C|--workdir DIR] [-r|--repo NAME] [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择 Repository 选择规则 --json 输 …

  • sow check

    发布于 命令

    Commandcliauditsigning

    sow check 是 Managed Repository 的深度只读门禁。它哈希包体、校验状态、重建期望视图并验证 已声明签名;不会修复、构建、恢复 Operation,也不会获取写锁。 语法 sow check [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -j, --jobs N 并行校验 Worker 数,不得小于 1 逻辑 CPU 数 -C, …

    sow check 是 Managed Repository 的深度只读门禁。它哈希包体、校验状态、重建期望视图并验证 已声明签名;不会修复、构建、恢复 Operation,也不会获取写锁。 语法 sow check [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -j, --jobs N 并行校验 Worker 数,不得小于 1 逻辑 CPU 数 -C, …

  • sow build

    发布于 命令

    Commandclimanagedgeneration

    sow build 是显式的 Desired-to-Built 收敛命令。它获取 Repository 写锁,恢复任何可裁决的 未完成 Operation,渲染并验证完整 Generation,最后切换协议指针。 语法 sow build [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | -N|--no-wait] [--json] 参数 含义 默认值 -j, …

    sow build 是显式的 Desired-to-Built 收敛命令。它获取 Repository 写锁,恢复任何可裁决的 未完成 Operation,渲染并验证完整 Generation,最后切换协议指针。 语法 sow build [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | -N|--no-wait] [--json] 参数 含义 默认值 -j, …

  • sow status

    发布于 命令

    Commandclimanagedaudit

    sow status 是低成本的 Repository 状态查询。它读取状态,但不哈希文件、不验签、不恢复 Operation、不构建元数据,也不获取写锁。 语法 sow status [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择 Repository 选择规则 -d, --dist NAME …

    sow status 是低成本的 Repository 状态查询。它读取状态,但不哈希文件、不验签、不恢复 Operation、不构建元数据,也不获取写锁。 语法 sow status [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择 Repository 选择规则 -d, --dist NAME …

  • sow where

    发布于 命令

    Commandclimanaged

    sow where 用于回答工作区中哪些 Dist 仍包含某个 Package Object。它默认搜索全部 Repository, 只读且不获取写锁。 语法 sow where PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 将搜索限制到一个 Repository 全部 …

    sow where 用于回答工作区中哪些 Dist 仍包含某个 Package Object。它默认搜索全部 Repository, 只读且不获取写锁。 语法 sow where PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 将搜索限制到一个 Repository 全部 …

  • sow show

    发布于 命令

    Commandclimanagedsigning

    sow show 在所选 Repository 中解析一个包引用,并打印完整 Package Object。该命令只读, 不获取写锁。 语法 sow show PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择 Repository 选择规则 -d, --dist NAME 将候选项收 …

    sow show 在所选 Repository 中解析一个包引用,并打印完整 Package Object。该命令只读, 不获取写锁。 语法 sow show PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择 Repository 选择规则 -d, --dist NAME 将候选项收 …

  • sow ls

    发布于 命令

    Commandclimanaged

    sow ls 是针对 Package Object 与 Dist Membership 的只读查询。它显示所选 Dist 应包含哪些包, 以及这些成员是否已经进入当前 Built Generation。 语法 sow ls [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择 Repository 选择 …

    sow ls 是针对 Package Object 与 Dist Membership 的只读查询。它显示所选 Dist 应包含哪些包, 以及这些成员是否已经进入当前 Built Generation。 语法 sow ls [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择 Repository 选择 …

  • sow rm

    发布于 命令

    Commandclimanagedpolicy

    sow rm 把包从你选定的 Dist 的期望成员集中拿掉,并默认立即重建受影响的索引。它不会从 pool/ 删除字节——成员关系与内容是两个概念,回收由独立的保守操作 sow gc 完成。 语法 sow rm PACKAGE... [-c|--check] [--skip] [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | -N|--no-wait] …

    sow rm 把包从你选定的 Dist 的期望成员集中拿掉,并默认立即重建受影响的索引。它不会从 pool/ 删除字节——成员关系与内容是两个概念,回收由独立的保守操作 sow gc 完成。 语法 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 输出

    发布于 参考

    Referenceclioutputjson

    所有产出数据的命令都接受 --json。输出是 stdout 上的 一行 版本化信封 —— 不管是哪条命令产生的,都能直接管道给 jq。 sow status --json {"schema":"sow.cli/v1","command":"status","ok":true,"repository":"pigsty","operation":null, …

    所有产出数据的命令都接受 --json。输出是 stdout 上的 一行 版本化信封 —— 不管是哪条命令产生的,都能直接管道给 jq。 sow status --json {"schema":"sow.cli/v1","command":"status","ok":true,"repository":"pigsty","operation":null, …

  • sow add

    发布于 命令

    Commandclimanagedpolicy

    sow add 是主要的写入路径。它解析你指定的包,从包头推导格式与架构,执行 Dist 的成员策略,并且—— 除非你加 --skip——在返回前重建全部受影响的索引。命令退出码为 0 时,客户端已经能看到新包了。 语法 sow add PATH... [-R|--recursive] [--skip] [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | …

    sow add 是主要的写入路径。它解析你指定的包,从包头推导格式与架构,执行 Dist 的成员策略,并且—— 除非你加 --skip——在返回前重建全部受影响的索引。命令退出码为 0 时,客户端已经能看到新包了。 语法 sow add PATH... [-R|--recursive] [--skip] [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | …

  • 退出码

    发布于 参考

    Referenceclioutput

    每条 sow 命令都以七个退出码之一结束。它们是稳定的、对所有命令一致, 并且就是设计来给脚本做分支判断的 —— 区分"这件事失败了"和"这件事被正确地拒绝了", 正是设置多个非零码的全部意义。 码 含义 0 完整成功,或幂等 no-op 1 运行时 I/O、解析器、渲染器或未知内部错误 2 用法、工作区发现或配置错误 3 部分成功:至少一项已提交,至少一项失败 4 写锁不可用 —— 被占用且指定了 --no-wait,或等待超时 5 完整性/恢复错误,或 check 判定当前结果不可交付 6 …

    每条 sow 命令都以七个退出码之一结束。它们是稳定的、对所有命令一致, 并且就是设计来给脚本做分支判断的 —— 区分"这件事失败了"和"这件事被正确地拒绝了", 正是设置多个非零码的全部意义。 码 含义 0 完整成功,或幂等 no-op 1 运行时 I/O、解析器、渲染器或未知内部错误 2 用法、工作区发现或配置错误 3 部分成功:至少一项已提交,至少一项失败 4 写锁不可用 —— 被占用且指定了 --no-wait,或等待超时 5 完整性/恢复错误,或 check 判定当前结果不可交付 6 …

  • sow dist

    发布于 命令

    Commandclidistmanaged

    Dist 是一个仓库内、单一格式(rpm 或 deb)的具名包集合。客户端指向的就是它。一个仓库可以同时拥有 RPM Dist 与 DEB Dist,两者共用一份 pool/,但渲染进完全独立的 dists/ 子树。 语法 sow dist ls [-C DIR] [-r NAME] [--json] sow dist new NAME --format rpm|deb [-C DIR] [-r NAME] [-T DUR | -N] [--json] sow dist show NAME …

    Dist 是一个仓库内、单一格式(rpm 或 deb)的具名包集合。客户端指向的就是它。一个仓库可以同时拥有 RPM Dist 与 DEB Dist,两者共用一份 pool/,但渲染进完全独立的 dists/ 子树。 语法 sow dist ls [-C DIR] [-r NAME] [--json] sow dist new NAME --format rpm|deb [-C DIR] [-r NAME] [-T DUR | -N] [--json] sow dist show NAME …

  • 命令

    发布于 命令

    Commandcli

    每条顶层命令单独成页;config、repo、dist、retain、 export、log 等命令组在同一页说明其子命令。 二进制内置的 sow help 是语法权威。本手册在此基础上补充选择规则、状态变化、输出契约、 失败行为与可直接使用的示例。 命令索引 sow create 是 Plain 模式的仓库命令,直接作用于目录。sow init 用于启动 Managed 模式, 必要时会创建 sow.yml;其余有状态命令发现既有工作区。help 与 version 是工具命令, 不需要进入任 …

    每条顶层命令单独成页;config、repo、dist、retain、 export、log 等命令组在同一页说明其子命令。 二进制内置的 sow help 是语法权威。本手册在此基础上补充选择规则、状态变化、输出契约、 失败行为与可直接使用的示例。 命令索引 sow create 是 Plain 模式的仓库命令,直接作用于目录。sow init 用于启动 Managed 模式, 必要时会创建 sow.yml;其余有状态命令发现既有工作区。help 与 version 是工具命令, 不需要进入任 …

  • 参考

    发布于 参考

    Referenceconfigcli

    这一部分记录配置字段、包引用、路径、退出码、JSON、平台与集成等稳定契约。CLI 语法和状态变化 见命令,使用模型见上手。 输出示例只说明形态;标识符、路径、哈希、时间戳与计数会随工作区变化。二进制自带的 sow help 始终是精确语法权威。 配置参考 完整配置 schema:工作区、仓库、Dist、成员策略、签名与发布目标。 包引用 命令行上指代一个软件包的五种写法、歧义如何裁决,以及 rm / show / where 各自接受哪些形态。 仓库布局 Plain 与 Managed 两种模 …

    这一部分记录配置字段、包引用、路径、退出码、JSON、平台与集成等稳定契约。CLI 语法和状态变化 见命令,使用模型见上手。 输出示例只说明形态;标识符、路径、哈希、时间戳与计数会随工作区变化。二进制自带的 sow help 始终是精确语法权威。 配置参考 完整配置 schema:工作区、仓库、Dist、成员策略、签名与发布目标。 包引用 命令行上指代一个软件包的五种写法、歧义如何裁决,以及 rm / show / where 各自接受哪些形态。 仓库布局 Plain 与 Managed 两种模 …

  • sow repo

    发布于 命令

    Commandclirepositorymanaged

    一个仓库(Repository)独占一份 pool/、一份 dists/、一个 SQLite 数据库与一个私有状态目录。它是 锁、事务恢复、Generation 编号与 Changeset 的边界——跨仓库不去重,也不承诺跨仓库原子提交。 sow repo 管理的就是这条边界。 语法 sow repo ls [-C DIR] [--json] sow repo new NAME [-C DIR] [-T DUR | -N] [--json] sow repo show [NAME] [-C …

    一个仓库(Repository)独占一份 pool/、一份 dists/、一个 SQLite 数据库与一个私有状态目录。它是 锁、事务恢复、Generation 编号与 Changeset 的边界——跨仓库不去重,也不承诺跨仓库原子提交。 sow repo 管理的就是这条边界。 语法 sow repo ls [-C DIR] [--json] sow repo new NAME [-C DIR] [-T DUR | -N] [--json] sow repo show [NAME] [-C …

  • 包引用

    发布于 参考

    Referenceclirpmdeb

    sow rm、sow show、sow where 都接受一个 PACKAGE 参数。本页定义你能在那里写什么。 三条命令共用同一套文法,只有对 歧义名称 的处理不同。 这里的内容与 sow add 无关 —— add 接受的是文件系统路径,不是包引用。 五种形态 形态 例子 匹配 内容摘要 sha256:d06d7f23b9cf...b98b1229 恰好一个包对象 RPM 坐标 rpm:pev2-0:1.23.0-1.noarch 恰好一个 RPM DEB 坐标 …

    sow rm、sow show、sow where 都接受一个 PACKAGE 参数。本页定义你能在那里写什么。 三条命令共用同一套文法,只有对 歧义名称 的处理不同。 这里的内容与 sow add 无关 —— add 接受的是文件系统路径,不是包引用。 五种形态 形态 例子 匹配 内容摘要 sha256:d06d7f23b9cf...b98b1229 恰好一个包对象 RPM 坐标 rpm:pev2-0:1.23.0-1.noarch 恰好一个 RPM DEB 坐标 …

  • sow config

    发布于 命令

    Commandcliconfig

    sow config 有两个只读子命令。config check 是对 sow.yml 的全量预检——每次手工改完配置以及在 CI 里都该跑一遍。config show 打印 SOW 实际算出来的配置,用它确认默认值、继承的架构与规范化别名 是不是按你预期解析的。 两个子命令都不创建目录、不碰数据库、不自动修正你的文件。 语法 sow config check [-C DIR] [--json] sow config show [--all] [-C DIR] [-r NAME] [-d …

    sow config 有两个只读子命令。config check 是对 sow.yml 的全量预检——每次手工改完配置以及在 CI 里都该跑一遍。config show 打印 SOW 实际算出来的配置,用它确认默认值、继承的架构与规范化别名 是不是按你预期解析的。 两个子命令都不创建目录、不碰数据库、不自动修正你的文件。 语法 sow config check [-C DIR] [--json] sow config show [--all] [-C DIR] [-r NAME] [-d …

  • 快速上手

    发布于 上手

    Startplainrpmdebcli

    Plain 模式在一个目录内生成平面仓库。它不读取 sow.yml,不创建工作区,也不维护数据库。 准备目录 把 RPM 和/或 DEB 文件放在目录顶层。sow create 不递归扫描,也不移动或改名包文件。 mkdir -p /srv/repo cp /path/to/packages/*.rpm /path/to/packages/*.deb /srv/repo/ 如果某种格式不存在,请只复制你实际拥有的软件包。 生成元数据 sow create /srv/repo 混合格式输出形态如下 …

    Plain 模式在一个目录内生成平面仓库。它不读取 sow.yml,不创建工作区,也不维护数据库。 准备目录 把 RPM 和/或 DEB 文件放在目录顶层。sow create 不递归扫描,也不移动或改名包文件。 mkdir -p /srv/repo cp /path/to/packages/*.rpm /path/to/packages/*.deb /srv/repo/ 如果某种格式不存在,请只复制你实际拥有的软件包。 生成元数据 sow create /srv/repo 混合格式输出形态如下 …

  • sow init

    发布于 命令

    Commandclimanagedconfig

    sow init 创建根级 sow.yml 与私有状态目录 .sow/,这两样东西让一个目录成为工作区(Workspace)。 它同时也是手写配置的收敛命令:如果 sow.yml 里已经声明了 Repository 与 Dist,init 会把还不存在 的那些实体化出来,已完成的原样跳过。 语法 sow init [DIR] [--json] DIR 默认为当前目录。init 不接受 -C/--workdir——位置参数已经明确指定了目标。 说明 首次 init 写出最小配置与私有状态目录: …

    sow init 创建根级 sow.yml 与私有状态目录 .sow/,这两样东西让一个目录成为工作区(Workspace)。 它同时也是手写配置的收敛命令:如果 sow.yml 里已经声明了 Repository 与 Dist,init 会把还不存在 的那些实体化出来,已完成的原样跳过。 语法 sow init [DIR] [--json] DIR 默认为当前目录。init 不接受 -C/--workdir——位置参数已经明确指定了目标。 说明 首次 init 写出最小配置与私有状态目录: …

  • sow create

    发布于 命令

    Commandcliplainrpmdeb

    sow create 把一个已经放着 .rpm / .deb 的目录变成平面仓库(flat repository):在包旁边写出索引 文件。它就是 Plain 平面模式的全部——没有 sow.yml、没有 SQLite、不做工作区发现。本页讲清单遍扫描 契约、--pigsty 完成门禁,以及 --sign-with 的 RPM 包签名。 语法 sow create [DIR] [-j N] [--pigsty] [-S KEY [--overwrite]] [-T DUR | -N] …

    sow create 把一个已经放着 .rpm / .deb 的目录变成平面仓库(flat repository):在包旁边写出索引 文件。它就是 Plain 平面模式的全部——没有 sow.yml、没有 SQLite、不做工作区发现。本页讲清单遍扫描 契约、--pigsty 完成门禁,以及 --sign-with 的 RPM 包签名。 语法 sow create [DIR] [-j N] [--pigsty] [-S KEY [--overwrite]] [-T DUR | -N] …