← 返回首页
什么是 yq?
yq 是一款轻量、便携的结构化数据命令行处理器——支持 YAML、JSON、XML、CSV、TOML 和 properties 文件,由 Mike Farah 使用 Go 编写。它采用类 jq 语法,您在 jq 上学到的一切都可以直接迁移:在脚本和流水线中查询、转换、合并以及原地编辑文件,只需一个零依赖的二进制文件。
⚠️ 这是哪个 yq?这是 mikefarah/yq(v4.x,Go)——绝大多数 CI 示例和文档中使用的那一个。它不是某些官方源中基于 python 的 yq jq 封装器;本软件包可干净地取代后者,且不需要 python 或 jq。
🚀 永久免费,安全修复立即发布:Debian 和 Ubuntu 在发布时会冻结软件包版本——本免费镜像提供发布至少 2 个月的最新版本,永久免费;安全修复立即发布。如需在上游发布后数小时内获取每个版本,请使用主仓库 deb.griffo.io。只需 apt upgrade 即可获取免费通道内的最新构建。
⚡ yq 的主要特性
🔄 六种格式
YAML、JSON、XML、CSV/TSV、TOML 和 properties——读取一种、输出另一种:yq -o=json '.' config.yaml 一步完成转换。
🧠 类 jq 语法
熟悉的路径、管道、函数和运算符。只要会写 jq 过滤器,就已经会在 YAML 上使用 yq。
✏️ 原地编辑
yq -i '.spec.replicas = 3' deploy.yaml——以脚本方式编辑 Kubernetes 清单、CI 配置和 Compose 文件,注释完好保留。
📦 零依赖
单个静态 Go 二进制文件。没有运行时、没有库、没有 python——是精简容器和 CI runner 的理想选择。
🔀 合并与锚点
深度合并多个文件、解析 YAML 锚点和别名、处理多文档流——把 YAML 的疑难场景都处理得当。
📖 附带 man 手册页
本软件包在二进制文件之外还提供完整的 man 手册页——man yq 可离线使用,符合 Debian 规范。
🏆 为什么用 apt 安装?
- 适合大规模部署:在基础镜像中固定一个仓库,每台服务器、每个容器和 CI runner 都能获得同样新版的 yq
- 告别 curl 下载二进制:使用 GPG 签名的仓库,而不是手动把二进制文件下载到
/usr/local/bin
- 正确的 yq:在所有机器上保证 mikefarah/yq v4 语义——不会因某些机器上的 python 封装器而遭遇意外
- 自动更新:通过
apt upgrade 自动获取免费通道的最新构建
- 多架构支持:amd64、arm64、armhf、ppc64el、s390x 和 riscv64
📦 从 deb-free.griffo.io 安装
步骤 1:添加仓库
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb-free.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb-free.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb-free.griffo.io.gpg] https://deb-free.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | sudo tee /etc/apt/sources.list.d/deb-free.griffo.io.list > /dev/null
sudo apt update
install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb-free.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb-free.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb-free.griffo.io.gpg] https://deb-free.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | tee /etc/apt/sources.list.d/deb-free.griffo.io.list > /dev/null
apt update
步骤 2:安装 yq
🚀 首次运行
yq '.services | keys' docker-compose.yml # query
yq -i '.image.tag = "1.2.3"' values.yaml # edit in place
yq -o=json '.' config.yaml # YAML -> JSON
📦 软件包构建仓库
Debian 软件包在此 GitHub 仓库中自动构建和维护:
🔗 相关软件包
也可从 deb-free.griffo.io 获取:
- k9s - Kubernetes TUI——与 yq 搭配处理清单文件再合适不过
- lazydocker - Docker TUI,管理您刚编辑好的 Compose 文件
- just - 命令运行器,封装您的 yq 单行命令
🎯 适合人群:编辑 Kubernetes 清单和 Helm values 的 DevOps 工程师、转换配置的 CI/CD 流水线、针对 YAML/JSON API 编写脚本的系统管理员,以及希望在每种配置格式上都获得 jq 式体验的用户。
💝 支持本项目
如果这个仓库为您节省了时间和精力,请考虑支持它!