# pig v1.10.0

> 603 条目录记录、PostgreSQL 目标验证、恢复与 fork 安全修复、Inventory 保真，以及一致的自动化结果。

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

Pig `v1.10.0` 集中修复现有命令的正确性与安全边界：操作前验证 PostgreSQL 目标，
保留 Inventory 来源与 YAML 类型，让仓库、扩展及自动化结果准确反映实际执行情况。
内嵌目录从 **600 条增至 603 条记录**。内置 Pigsty 保持 `4.5.0`，默认 `cargo-pgrx` 保持 `0.19.3`。

## PostgreSQL 目标与维护命令

- 显式 `-D` 将 `psql`、`ps`、`kill`、`vacuum`、`analyze`、`freeze`、`repack` 绑定到所选实例，
  包括 `--all` 枚举数据库的连接。启动 SQL 客户端前，PIG 检查 PID、数据目录、端口、socket
  与进程身份。运行元数据无效、过期、来自其他目录或无法确认时直接失败，不回退到另一实例。
- 未指定 `-D` 时，这些 SQL 命令保留原生客户端的连接默认值。`pg clone` 与 `pg fork`
  继续使用各自的端口参数。提升后的时间线检查使用所选实例或其控制数据；无法解析时保留未知状态。
- 计划与确认重试命令保留数据目录、PostgreSQL 版本、操作系统用户和维护选项。
  `VACUUM FULL` 计划正确标明必须确认。
- 维护命令的位置参数只接受数据库名称。包含 `=` 或以 `postgres://`、`postgresql://`
  开头的值在规划或执行前被拒绝，错误信息不回显该值。空格和非 ASCII 名称继续受支持。
  生成的命令将名称放在 `--` 后，避免把名为 `--all` 的数据库解释成命令选项。
- `vacuum`、`analyze`、`freeze --all` 在开始维护前验证完整数据库列表。
  需要连接串或被此边界拒绝的数据库名时，请使用原生客户端。

目标选择见 [`pig pg`](/zh/pg/#全局参数)，数据库名称规则见
[维护命令](/zh/pg/#数据库维护命令)。

## 运行状态、恢复与 fork 安全

- 权限失败、PID 元数据损坏、进程身份无法验证时，报告错误或未知状态，不能据此授权强制初始化、
  恢复或 fork 替换。`pg status` 对权限失败返回 `130201`（退出码 `3`），其他运行探测失败
  返回 `130808`（退出码 `1`）。计划将无法确认的前置条件标为 `unknown`。
- 拒绝 PITR 确认或输入到达 EOF 时，在停止服务、恢复、启动之前返回 `161001`（退出码 `7`）。
  未知状态不能提供可用于强制终止的 PID，也不能视为启动成功。恢复后的 SQL 检查要求目标已验证。
- 替换非空的非托管 fork 目录，需要有效的归属元数据，且其中显式记录的目标路径必须匹配。
  缺失、损坏或不匹配的元数据不能授权删除。运行中目标以及源目标路径关系的保护继续有效。
- Clone 与 fork 必要时以所选数据库操作系统用户执行路径检查，支持权限为 `0700` 的私有数据目录。
  无法访问或解析的路径不能绕过校验。托管孤儿副本仍可通过其托管名称清理。
- 以数据库用户写文件时，使用私有的同目录临时文件并精确替换目标。新文件权限为 `0600`；
  拒绝目录与符号链接目标，替换时不会覆盖指向旧文件的其他硬链接所见的内容。

[PITR 参考](/zh/pitr/)介绍托管恢复流程；[`pig pb restore`](/zh/pb/#pb-restore) 仍是独立的恢复原语。

## Inventory 与 Pigsty

- `sty deploy` 与 `do` 显式向 Ansible 传递已解析的 Inventory 路径。命令行和环境变量中的
  相对路径以调用者工作目录为基准；带引号的 `~/` 路径在解析前展开。选中的来源缺失或无效时，
  不会静默回退到其他清单。
- `pg_users[].roles` 同时保留角色名称字符串与结构化授权，包括授权状态及可选的
  `admin`、`set`、`inherit` 属性。
- 编辑、序列化与 CMDB 导出保留可能被 YAML 消费端解释成数字、日期或时间戳的字符串。
  已有时间戳标量保留原始源码表示。独立 PyYAML 检查验证输出仍为字符串类型。
- `sty conf --proxy` 接受 HTTP、HTTPS、ALL、NO 代理变量的大写与小写形式；HTTP、HTTPS
  缺失时都会回退到 ALL_PROXY。版本补全按点分段匹配，指定 `1.1` 不会误选 `1.10`。

详情见 [Inventory 来源选择](/zh/inventory/#source-selection)与 [`pig sty`](/zh/sty/)。

## 软件仓库与扩展

- 仓库命令在改文件前验证完整操作数列表。空值、逗号列表中的空项、不安全的仓库名在修改前失败。
  只有真正不带参数的 `repo rm` 才备份全部仓库文件；`repo rm all` 展开为 `node`、`pgsql`、
  `infra` 三个模块。删除结果保留原始请求，区分不存在的目标和实际删除的文件。
  备份全部仓库后也会按 `--update` 刷新缓存。
- 创建仓库时保留文档 RPM。调试包仍通过 `--nodbg` 排除，包名含 `-docs` 或 `-doc`
  本身不会将其判为调试包。
- 默认扩展列表、可用性摘要、刷新结果统计全部目录记录，包括 SQL 工具和保留的生命周期记录。
  总数表示目录覆盖范围，不表示某台主机可以安装或能通过 `CREATE EXTENSION` 启用的扩展数。
- 文本、JSON、YAML 共用可用性规则。已覆盖的 Linux 平台以包矩阵为准，矩阵缺项即不可用，
  架构别名统一处理。macOS 状态仅表示声明的 PostgreSQL 版本支持，不承诺存在 RPM/DEB 包。
  `ext list -v` 选择判断状态时使用的版本，不会过滤掉不可用记录。
- `ext import` 在任何请求包无法解析或下载时返回失败，同时保留已成功下载的文件，报告完成与
  失败部分。APT 虚拟依赖标记不再进入下载包名列表。已安装库扫描也能识别没有控制文件的目录条目。
- 目录新增 `pg_icu_parser`、`pg_vectorsearch`、`textsearch_intl` 三条记录，同时刷新已有条目的
  版本和平台元数据。安装前可用 `pig ext avail NAME` 检查目标。

详情见 [`pig repo`](/zh/repo/)与 [`pig ext`](/zh/ext/)。

## 构建与自动化

- 多版本构建依赖按每个选定的 PostgreSQL 大版本展开包名，去重后安装。默认构建目标继续遵循
  扩展元数据与本地安装规则，不会因包矩阵缺包而丢失。
- Debian/Ubuntu 构建保留继承的 `PATH` 顺序，当前用户的 `~/.cargo/bin` 存在时追加到末尾，
  保留用户已选工具链的优先级。
- Xray 设置识别完整旧服务定义，包括旧渲染器生成的无 marker macOS plist。
  注释本身不能证明归属；被修改或外来的定义仍需要显式替换。配置一致的重复执行保留运行中的服务。
- JSON/YAML 输出及 `PIG_NON_INTERACTIVE=1` 在 PIG 管理的适配器中一致禁用提示输入，
  使用非交互 sudo。明确的数据输入通道仍可用；原生 Patronictl 转发保留交互和退出契约。
- CMDB 连接串、旧 VMess 凭据、许可证密钥不会进入常规参数与失败详情。
  显式凭据导出与 Inventory 原文显示保留文档约定的敏感输出行为。
- Exporter HTTP 4xx/5xx 返回失败，仅包含数字状态码与标准说明，不包含响应体或自定义状态文本。
  `pig update` 在不支持的平台上明确报错。命令帮助与中英文参考文档同步校准。
- 更新 Go 依赖与验证工具。CI 增加 Linux 权限、实例边界和独立 YAML 消费端验收。

详情见 [`pig build`](/zh/build/)、[`pig pe`](/zh/pe/)与[全局命令行为](/zh/cmd/)。

## 升级注意事项

已有命令名和参数继续可用。自动化脚本需要处理部分导入失败、HTTP 错误、恢复取消和
PostgreSQL 状态无法确定时纠正后的失败状态。仓库操作数必须有效，需要确认的操作仍须显式确认，
维护命令应传入数据库名称。名称以 `-` 开头时，把全部选项放在前面，再写 `--` 和数据库名。

按[安装文档](/zh/install/)升级。

**v1\.10\.0 · 2026-10-17**
- [查看发布](https://github.com/pgsty/pig/releases/tag/v1.10.0)
- [源码 · tar\.gz](https://github.com/pgsty/pig/archive/refs/tags/v1.10.0.tar.gz)
- [源码 · zip](https://github.com/pgsty/pig/archive/refs/tags/v1.10.0.zip)
- [pgsty\/pig](https://github.com/pgsty/pig)
