跳转到主要内容

mcli 20260916 发布

接入 pkg v3.14.1 与新 SDK,修复失败退出码、复制错误与参数 panic,交付经过验证的客户端和软件包。

版本: RELEASE.2026-09-16T00-00-00Z · 软件包: 20260916000000.0.0 · 源码: e952aa78f10a

相对 20260913 的变化

  • 接入 silo-pkg v3.14.1、上游 minio-go v7.3.1-0.20260915093545-32e1f32cb176JWX v3.3.0。CopyObject 会重试并报告 HTTP 200 响应内嵌的 S3 错误,避免复制失败后授权 mv 删除源对象;JWX 正确转义输出 JSON 的字段名。
  • mirror 报告权限失败,包括源不可读、目标写入拒绝及本地目标删除失败。后续对象继续处理,有限任务有失败就返回 1;这些逐对象权限错误不要求 --skip-errors,也不会在 watch 模式中重启整个扫描。
  • 列举与监听失败保留原有取消重试路径。持续拒绝列举权限仍可能导致反复重扫,本次没有重写该重试策略。
  • 失败的 mirror 不再输出普通成功结束统计;显式 --summary 仍输出统计,JSON 使用 status: failure,文本错误诊断仍位于 stderr。同一时钟刻度内完成的极短传输不再产生无穷大的 JSON 速度值。
  • legalhold set/clear、递归 retention 部分失败、mv 源删除失败都返回非零。mv 等待删除结果,已成功复制的对象不回滚;retention 每个失败对象只输出一次诊断,避免重复或误导提示。
  • 空 retention 时长与非法 find --regex 表达式正常报错,不再 panic。

脚本兼容性与升级

上述曾返回 0 的失败路径现在返回 1。 请检查最终退出码与错误记录。逐对象 success 开始消息与进度字节不代表传输完成。mv 删除失败可能使源和已成功复制的目标同时存在,重试前应核对两端状态。

配置格式、别名、MC_* 变量、命令与包命名保持不变。pkg v3.14.1 保留 v3.14.0 引入的密码权限语义。单独升级 mcli 不会升级已安装的 Server/Console,不会改变 Server 授权,也不会替换旧 Server 镜像内的客户端。见组件版本矩阵密码权限迁移

正式支持和管理接口验收以 SILO 为目标;对原厂 MinIO 与其他 S3 服务保持尽最大努力的兼容。

交付与验证

本次发布包含 19 个资产:Linux/macOS/Windows 的 amd64/arm64 共六个归档,Linux 两架构的 RPM/DEB/APK 共六个包,一个归档校验清单,以及六个包校验文件。归档、清单与 DEB/APK 通过 Sigstore 构建证明绑定到签名 tag 与精确源码;RPM 携带 PGSTY GPG 签名(9592A7BC7A682E7333376E09E7935D8DB9BD8B20)。

最终发布提交通过 Linux/macOS/Windows race 测试、Linux 386 测试、交叉编译、漏洞扫描和发布打包流水线。发布前还验收了已发布 SILO 20260903 与修复后的 Server 源码 3c26a8b0b5bd、Object Lock 与权限失败、CopyObject 故障注入及双架构 RPM/DEB/APK 安装升级。扫描未发现可达漏洞或已导入包漏洞,仍保留未使用 OpenPGP 代码的模块级提示。

CI: VulnCheck · Test Release Pipeline · Crosscompile · Go · Release · Docker

docker.io/pgsty/mc 版本标签和 latest 对应同一经过验证的 Linux amd64/arm64 manifest:

sha256:cfc83108c3abb371f8fb84d99c1fdc88f8c237e022409b0081fb7c0a3be634dd

下载与安装 · 客户端兼容性 · 完整源码差异

这项 HTTP-200 CopyObject 修复适用于 mcli 选择单次 CopyObject 的路径:对象小于 64 MiB,或显式 --disable-multipart。更大复制默认走 ComposeObject,不能用该修复替代对此路径的单独验证。

JWX 的具体范围及 GHSA-4cf7-xm37-g63h 见 pkg 3.14.1--json mirror 失败后若未指定 --summary,不会补一条尾部统计记录;--skip-errors 也不会把已经发生的失败恢复成退出码 0。部分 retention JSON 失败记录只有 status: failure,错误对象可能序列化为 {},消费方不能强制要求人类错误文字存在。