跳转到主要内容

Barn 0.4.0:一条命令、能用的数据盘、统一的输出

首次运行只需一条命令,默认数据盘在所有镜像上可用,就绪失败直接给出原因,全部命令统一输出风格。
说明

本文为 0.4.0 历史发布记录。旧版发行附件已下线,安装当前版本请参见安装指南。

Barn 0.4.0 将首次使用收敛为一条命令,修复了 Debian 与 Ubuntu 镜像上默认数据盘因缺少 xfsprogs 无法格式化的问题,并统一了全套 CLI 的输出风格;Pigsty 清单格式、固定 IP 部署模型、状态目录结构与内置镜像目录修订版 2026082903 保持不变。

主要变化

  • 一条命令完成首次启动。 在交互式终端中,若宿主机尚未安装固定 IP 网络,运行 barn up 会自动调用 barn setup:先展示宿主准备计划并在提权步骤前请求确认,完成后直接继续启动虚拟机。barn init 的下一步提示同步更新为 barn up。
  • vm_disks[].fs 默认值改为 auto。 空白数据盘在客机具备 mkfs.xfs 时格式化为 XFS,否则自动回退为 ext4,与 Pigsty 的 Vagrant 行为保持一致。此前默认硬编码 xfs 会导致未预装 xfsprogs 的上游 Debian 与 Ubuntu 镜像挂载失败。按旧默认值创建的既有部署不会被判为配置漂移,持久盘保持兼容。
  • 客机初始化报错直达原因。 客机错误标记现会记录失败命令的最后一行输出,因此 up 会直接报告 guest bootstrap failed during data-disks: xfs requested but mkfs.xfs is unavailable,而不再只返回退出码。
  • 统一 CLI 输出风格。 生命周期命令与 status 统一打印节点状态表,并在 up 完成后提示 next: barn ssh <node>。无变更时 plan 与 validate 仅输出一行简短结论;image list、network status、doctor 与预检报错改为直接输出自然语言说明(spec hash 等内部字段仅在 --json 中输出)。当传入未知节点名时,报错信息会一并列出当前可用节点。
  • SSH 远程命令原样透传。 barn ssh <node> -- 'df -h /data; id' 会按 OpenSSH 标准方式原样传递远程命令字符串。

升级说明

对于由 0.3.0 或更早版本创建且 /data 未能成功挂载的 Debian 12/13 或 Ubuntu 节点,执行一次 barn recreate <node> 即可将数据盘格式化为 ext4 并完成挂载。在无 TTY 的自动化环境中,若宿主机尚未初始化网络,运行 up 前仍需先执行 barn setup --yes。

验证范围

源码提交 8ecb8476c7dbc934d8cbbee935ac53884d00fcdb 已通过完整本地源码门禁(涵盖单元测试、竞态测试、go vet、Staticcheck、deadcode、errcheck、govulncheck、Shell 与模块检查、四目标交叉构建、镜像流水线与安装器测试及依赖许可证校验),标签工作流构建并验证了全部归档、原生软件包、SBOM 与安装脚本。各阶段的 macOS arm64/HVF 与 Ubuntu amd64/KVM 实测记录见验证历史。

安装或升级

从 Barn 0.4.0 GitHub 发布页下载安装脚本与发行资产:

curl -fLO https://github.com/pgsty/barn/releases/download/v0.4.0/install.sh
chmod +x install.sh
BARN_VERSION=0.4.0 ./install.sh
barn version
barn doctor

同一预发布页附带 Homebrew 配方与 amd64/arm64 DEB/RPM 软件包。