用途:审计并更新 .NET 仓库中的 os-packages.json 文件,这些文件声明每个 .NET 版本在各 Linux 发行版上所需的软件包;对应的 os-packages.md 由 JSON 生成,不可手工编辑。其范围比 supported-os.json 更广,包含预发布发行版(如 Fedora beta)和永久不稳定通道(Alpine edge、Debian sid)。
适用时机:新增发行版版本、出现预发布版本、包名在发行版间变化(如 libicu74→libicu76)、OS 版本停止支持需删除条目,或定期审计包名是否仍存在。
前置条件:需安装 release-notes 工具,包发布在 GitHub Packages,需认证。安装命令:dotnet tool install -g release-notes --add-source https://nuget.pkg.github.com/richlander/index.json;验证:release-notes --help。若遇 401,需配置源凭据(dotnet nuget add source ... --username USERNAME --password "$GITHUB_TOKEN" --store-password-in-clear-text)。GitHub Actions 中 GITHUB_TOKEN 自动可用,本地需 read:packages 权限的 PAT。
流程:1) 对每个待审计版本运行 release-notes verify os-packages <version> release-notes,退出码 0 表示无问题可停止,2 表示有问题并输出 markdown 报告;校验器目前仅支持 Ubuntu(Launchpad API)和 Debian(packages.debian.org),其他发行版跳过。2) 确定改动范围,向用户展示发现与建议。3) 编辑 release-notes/<version>/os-packages.json,含 packages 全局定义与 distributions 各发行版数据;新增发行版发布时复制最近条目并更新 name、release、包名;Alpine edge 与 Debian sid 为永久条目不可删除;发布按最新在前排序,每个发布须包含所有顶层包,id 须匹配顶层定义。4) 运行 release-notes generate os-packages <version> release-notes 重新生成 Markdown。5) 运行 npx markdownlint --config .github/linters/.markdown-lint.yml release-notes/<version>/os-packages.md 检查。6) 再次 verify 确认问题解决。7) 创建分支、提交 JSON 与 MD 文件并开 PR。
限制:校验器仅覆盖 Ubuntu 和 Debian,其他发行版需人工审查;安装命令按发行版而非按发布定义;当前含 os-packages.json 的活跃 .NET 版本为 8.0、9.0、10.0。