发布候选版本验证指南:从 RC 下载到投票签名的完整实操流程)
后端【免费下载链接】fesodFast. Easy. Done. Processing spreadsheets without worrying about large files causing OOM.项目地址https://gitcode.com/gh_mirrors/fast/fesod点击查看免费下载Apache FesodIncubating作为进入 Apache 软件基金会ASF孵化器的电子表格处理库每次正式发布前都会产出一个 Release CandidateRC候选版本供社区成员在devfesod.apache.org邮件列表上投票确认。本文以仓库内 verify-release.md 为骨架系统讲解如何对一个 RC 版本完成全链路验证下载候选物料、校验 GPG 签名与 SHA512 哈希、审计源码包合规性DISCLAIMER / RAT / LICENSE / NOTICE、确认可编译并最终在投票线程中给出带有依据的1。读者按本文步骤操作即可独立完成一次 Apache 孵化项目的发布验证并理解其背后的 ASF 合规要求与仓库内的真实配置依据。1. 下载发布候选版本Release Candidate验证的第一步是从 ASF 的 dev 分发仓库获取候选版本物料。验证环节依赖 GPG 工具请确保本机已安装gpg或gpg2下载耗时取决于网络状况请确保网络畅通。先设置两个环境变量后续所有命令均可复用请替换为实际的版本号例如RELEASE_VERSION2.0.2-incubating、RC_VERSIONrc1export RELEASE_VERSION{发布版本号} export RC_VERSION{RC版本号}下载物料有两种方式官方推荐第一种# 方式一如果本地有 SVN直接 checkout推荐 svn co https://dist.apache.org/repos/dist/dev/incubator/fesod/${RELEASE_VERSION}-${RC_VERSION}/ fesod-dist-dev # 方式二使用 wget 直接下载特定文件 wget https://dist.apache.org/repos/dist/dev/incubator/fesod/${RELEASE_VERSION}-${RC_VERSION}/apache-fesod-${RELEASE_VERSION}-src.tar.gz说明dist.apache.org/repos/dist/dev/是 ASF 的开发/候选分发区只有通过社区与 IPMC 投票的版本才会被svn mv迁移到dist/release/正式发布区。RC 命名的-rcN后缀代表第 N 轮候选若投票未通过修复问题后会产生新的 RC 轮次。仓库当前开发版本号可在根目录 pom.xml 的revision属性中看到如2.1.0-incubating正式发布的历史版本与下载入口可参考 网站下载页。2. 验证物料合规与完整性2.1 检查发布包完整性上传到 dist 的每个版本目录必须包含三类文件缺一不可源码包Source Package-src.tar.gz必须签名文件.asc必须哈希文件.sha512必须只有同时具备源码包 签名 哈希才能继续后续的签名与校验和验证。2.2 检查 GPG 签名签名验证用于确认源码包确实由拥有对应私钥的发布者签名防止下载内容被篡改或伪造。2.2.1 导入 KEYSKEYS 文件在 ASF 的 release 目录统一维护单一来源避免多个副本漂移不一致验证时从downloads.apache.org下载并导入# 下载 KEYSKEYS 在 release 目录维护单一来源 curl https://downloads.apache.org/incubator/fesod/KEYS KEYS # 导入 KEYS 到本地 gpg --import KEYS2.2.2 信任公钥可选但推荐找到本次发版人Release Manager的 Key ID进行信任设置使gpg --verify的输出更可信# 查找本次发版人的 Key ID并进行信任设置 gpg --edit-key KEY_ID # 输入 trust选择 5 (ultimate)确认 y最后 quit2.2.3 验证签名# 验证源码包 gpg --verify apache-fesod-${RELEASE_VERSION}-src.tar.gz.asc apache-fesod-${RELEASE_VERSION}-src.tar.gz检查结果输出中必须出现Good signature字样才算通过。若出现BAD signature或无法校验应立即停止并在投票线程中反馈。2.3 检查 SHA512 哈希SHA512 校验用于确认文件在传输过程中未被破坏或篡改与签名验证互为补充。Mac OS / Linux# 验证源码包 shasum -a 512 --check apache-fesod-${RELEASE_VERSION}-src.tar.gz.sha512 # 或者手动对比 shasum -a 512 apache-fesod-${RELEASE_VERSION}-src.tar.gz cat apache-fesod-${RELEASE_VERSION}-src.tar.gz.sha512WindowscertUtil -hashfile apache-fesod-${RELEASE_VERSION}-src.tar.gz SHA512将计算出的哈希值与.sha512文件内容逐一比对一致才通过。仓库的 下载页 也提供了面向普通用户的同样验证步骤gpg --verify与shasum -a 512 -c说明该流程不仅是投票者专属任何使用方都可以照此核验官方源码包的真实性。3. 检查源码包内容核心合规项完整性验证通过后解压源码包并进入目录开始针对 Apache 孵化项目的合规性审计tar -xvf apache-fesod-${RELEASE_VERSION}-src.tar.gz cd apache-fesod-${RELEASE_VERSION}-src3.1 孵化器特有检查Incubator Check作为孵化项目必须检查根目录下是否存在DISCLAIMER或DISCLAIMER-WIP文件且内容声明该项目正处于孵化阶段。这一要求是所有 Apache Incubator 项目的强制项。在仓库根目录可以看到真实的 DISCLAIMER 文件其内容明确声明Apache Fesod (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC并说明孵化状态尚不代表项目已获得 ASF 的完全背书。此外根目录 pom.xml 中还通过maven-resources-plugin的copy-disclaimer-into-jar执行段把DISCLAIMER复制进各模块产物的META-INF目录——也就是说无论是源码包还是 Maven 构件DISCLAIMER 都必须随包分发。3.2 ASF License Header 检查RAT使用 Apache RATRelease Audit Tool插件对全部源码做 License 头审计# 运行 RAT 检查 ./mvnw apache-rat:check # 或者如果未配置 wrapper mvn apache-rat:check检查结果分析查看生成的报告文件通常在target/rat.txt或控制台输出Unapproved Licenses:必须为0。Binaries:应当为0源码包中不应包含编译后的二进制 jar/class 文件。# 快速查看异常文件Mac/Linux find . -name rat.txt -print0 | xargs -0 -I file cat file | grep Unapproved Licenses在仓库根目录 pom.xml 中可以看到该项目的apache-rat-plugin实际配置它通过excludes显式豁免了website/**、logo.svg、**/*.md、dist/**、**/*.xlsx、**/*.xls、**/*.csv、.git/**、.github/**、**/target/**等路径。这解释了为什么源码包内的文档、测试数据文件与构建产物不会误报为无 License 头同时也反向提醒验证者RAT 报告的 0 值依赖于与源码包一致的 RAT 配置若你在解压包内运行 RAT 时发现任何未豁免的异常文件都应视为合规问题。与之配套的还有根目录 licenserc.toml它以builtin Apache-2.0-ASF定义了另一套 header 检查覆盖*.java、*.xml、*.yml等文件类型发布公告 2026-02-27 版本文案 中也提到项目通过 Spotless 实现了 License Header 的自动化管理可见头文件合规是 Fesod 发布流程中反复加固的环节。3.3 源码编译验证确保源码可以被正确编译打包# 首次编译可能需要下载依赖耗时视网络而定 ./mvnw clean install -DskipTests检查项Build Success编译成功源码包中不包含任何非必要的二进制文件如.jar、.zip、.class仓库根目录自带 mvnwMaven Wrapper与 pom.xml其中java.version、maven.compiler.source/target均为1.8说明项目以 JDK 8 为基线验证时使用 JDK 8 及以上版本即可。需要留意的是maven.test.skip与maven.javadoc.skip在父 POM 中默认置为true因此-DskipTests只是例行跳过测试的写法若希望在验证时顺带跑一遍测试套件仓库在fesod-sheet等模块下维护了大量单元测试与模糊测试用例去掉-DskipTests即可。此外pom.xml 中固定了project.build.outputTimestamp2026-09-10T00:00:00Z这正是 ASF 所要求的可复现构建Reproducible Builds配置——同一个 tag 在不同机器上编译应当产出字节级一致的构件这也是投票者可以放心验证从源码可编译的底层保障。3.4 许可证合规性检查LICENSE / NOTICE / DISCLAIMER进入解压后的根目录人工核对以下文件LICENSE 文件存在且内容为标准 Apache License 2.0。NOTICE 文件存在年份正确例如包含 2025/2026如果引入了其他必须在 NOTICE 中声明的依赖需确认已包含。DISCLAIMER 文件存在孵化项目必须存在。仓库内的实际文件可以作为对照样例LICENSE 是完整的 Apache License 2.0 文本NOTICE 首行标注Copyright 2025-2026 The Apache Software Foundation并声明本项目包含源自 Alibaba GroupEasyExcel在 Apache License 2.0 下许可的部分代码Copyright (C) 2022-2024 Alibaba Group Holding Ltd.还列出了 Apache Maven Wrapper 的版权归属——这正是NOTICE 需要包含对捆绑依赖的声明的真实体现。验证时务必确认源码包内这三份文件与仓库版本一致、年份更新到当前发布年度。4. 验证完成后回复投票邮件验证完成后请在开发者邮件列表devfesod.apache.org的投票线程中回复结果。特别提示如果你是PPMC项目管理委员会成员你的投票是Binding有约束力的回复中必须带上(binding)后缀普通贡献者的投票为(non-binding)同样欢迎并纳入统计。回复模板PPMC 成员1 (binding) [X] Download links are valid. [X] Checksums and signatures. [X] LICENSE/NOTICE files exist [X] No unexpected binary files [X] All source files have ASF headers [X] Can compile from source My Environment: - OS: MacOS 版本号 / Linux - JDK: JDK版本 - Maven: Maven版本回复模板非 PPMC 成员/贡献者1 (non-binding) I have checked: ... (同上)模板中的六项检查点下载链接、校验和与签名、LICENSE/NOTICE、无意外二进制、ASF 头文件、可编译与本文第 2、3 章的验证步骤一一对应也就是说这份回复模板本身就是验证清单的缩影。投票在邮件列表中至少开放 72 小时且需要至少 3 个 binding1才能通过——关于投票发起、结果公布与后续 IPMC孵化器管理委员会审批的完整流程可参见姊妹文档 发布版本指南社区沟通与邮件订阅方式见 加入社区说明。5. 附一次验证的完整命令流速查把上文分散的命令串成一条可复用的操作流在干净的临时目录中执行# 0. 环境变量 export RELEASE_VERSION2.0.2-incubating export RC_VERSIONrc1 # 1. 下载 svn co https://dist.apache.org/repos/dist/dev/incubator/fesod/${RELEASE_VERSION}-${RC_VERSION}/ fesod-dist-dev cd fesod-dist-dev # 2. 导入公钥并验证签名 curl https://downloads.apache.org/incubator/fesod/KEYS KEYS gpg --import KEYS gpg --verify apache-fesod-${RELEASE_VERSION}-src.tar.gz.asc apache-fesod-${RELEASE_VERSION}-src.tar.gz # 3. 校验 SHA512 shasum -a 512 --check apache-fesod-${RELEASE_VERSION}-src.tar.gz.sha512 # 4. 解压并审计 tar -xvf apache-fesod-${RELEASE_VERSION}-src.tar.gz cd apache-fesod-${RELEASE_VERSION}-src ls DISCLAIMER LICENSE NOTICE # 确认三件套存在 ./mvnw apache-rat:check # Unapproved Licenses 0 ./mvnw clean install -DskipTests # Build Success提示上文的${RELEASE_VERSION}、${RC_VERSION}仅为占位符实际验证时请以投票邮件中公布的版本目录名为准。正式发布版本的源码包命名与下载地址格式可参考 网站下载页 中apache-fesod-2.0.2-incubating-src.tar.gz的真实样例。赞分享后端【免费下载链接】fesodFast. Easy. Done. Processing spreadsheets without worrying about large files causing OOM.项目地址https://gitcode.com/gh_mirrors/fast/fesod点击查看免费下载相关推荐5 步生成黑苹果 EFIOpCore-Simplify 与 OpenCore 自动化工具完整指南5 步生成黑苹果 EFIOpCore Simplify 与 OpenCore 自动化工具完整指南 OpCore Simplify 是一款交互式命令行工具用于开发工具CLIApache Fesod(Incubating) 版本发布全流程指南从 PGP 签名到 IPMC 投票与正式发布Apache Fesod Incubating 版本发布全流程指南从 PGP 签名到 IPMC 投票与正式发布 Apache Fesod孵化中是一个面向海后端Apache Iceberg 完整发布流程指南从 RC 候选构建、社区投票到版本化文档与候选版本验证Apache Iceberg 完整发布流程指南从 RC 候选构建、社区投票到版本化文档与候选版本验证 Apache Iceberg 作为 Apache 顶级项数据湖大数据数据存储上一篇卡牌批量生成器CardEditor一套模板如何让上百张桌游卡牌一分钟完工下一篇给iPhone 4S装回iOS 6一个脚本就够了Legacy iOS Kit降级实录创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考