
StarRocks 版本命名规范与软件包命名规则全解【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks导读StarRocks 的版本号采用MAJOR.MINOR.PATCH[-PRERELEASE]三段式结构软件发布包则遵循StarRocks-x.y.z[-rcxx]-os-arch.tar.gz的命名约定。本文以官方 版本命名文档 为核心系统讲解主版本、次版本、补丁版本与预发布版本Release Candidate的语义划分并结合仓库中的构建脚本、运行时版本查询实现与发布记录说明版本号如何从构建环境注入到二进制产物、如何通过 SQL 与命令行查看以及如何正确解读和选用发布包。版本号三段式结构MAJOR.MINOR.PATCH[-PRERELEASE]StarRocks 对正式发布版本统一采用如下格式MAJOR.MINOR.PATCH[-PRERELEASE]其中PRERELEASE用于标识预发布版本的类型与序号。各段位的具体含义如下MAJOR主版本当发生不兼容的 API 变更或产品的整体战略发生重大调整时主版本号递增。升级主版本通常意味着需要关注破坏性变更例如接口、协议或行为模式的重大改动升级前应仔细阅读对应的发布说明。MINOR次版本当以向后兼容的方式新增功能时次版本号递增。典型场景包括增加新特性、能力增强但不会破坏当前主版本下的 API 或软件的核心行为模式。例如 StarRocks 的3.3、3.4等版本线即属于此范畴。PATCH补丁版本当进行向后兼容的缺陷修复时补丁版本号递增。这通常对应 Bug 修复或小幅改进不影响软件的主要功能与 API。例如3.4.1、3.4.2都是针对3.4.0的补丁版本。PRERELEASE预发布标识在版本号后追加预发布标识表示该构建面向早期采用者进行测试。预发布标识会标明预发布版本的序号例如rc01、rc02。目前 StarRocks 唯一使用的预发布标签是rc后跟两位数字如rc01。:::note 注意 Release Candidate候选发布版仅为初始次版本和主版本构建。例如3.4.0-rc01、4.0.0-rc01也就是说补丁版本如3.4.1通常不会再出-rc01预发布包。 :::版本号实例解读官方文档给出了三个典型样例可直接对照理解版本号含义3.4.0正式发布版本GA 版本3.4.0-rc013.4.0的第一个预发布版本。例如3.3版本线也曾发布过第二个预发布版本3.3.0-rc023.4.1、3.4.2Bug 修复版本补丁版本从仓库的 release_notes 目录 也可以验证这一规律例如 release-3.4.md 中按3.4.0、3.4.1 (Yanked)、3.4.2、3.4.3……3.4.10的顺序罗列了各补丁版本的行为变更与修复项其中3.4.1 (Yanked)还标注了“被撤回”的状态——这说明补丁版本虽小但发布流程同样遵循严格的评审与回溯机制。软件包命名规则软件发布包的命名约定为StarRocks-x.y.z[-rcxx]{-os}{-arch}.tar.gz即主形式为Product-version-os-arch各组成部分说明如下x.y.z遵循上述三位版本号规则-rcxx为可选的预发布版本号如-rc01、-rc02。OS操作系统目前包括ubuntu、centos必填。ARCHCPU 架构目前为amd64必填截至本文档编写时社区版暂未提供arm64构建包。软件包命名示例StarRocks-3.4.0-rc01-ubuntu-amd64.tar.gz3.4.0的预发布版本面向 Ubuntu Linux 构建。StarRocks-3.4.1-centos-amd64.tar.gz面向 Red Hat Enterprise Linux / CentOS 构建的 PATCH 补丁版本。命名细节提示预发布标识位于版本号之后、操作系统标识之前下载部署时请根据自身操作系统Ubuntu 或 CentOS/RHEL与 CPU 架构amd64精确匹配包名避免误用。从源码看版本号如何被注入与输出版本号不仅是发布包的“标签”它还会在构建阶段被写入二进制产物并在运行时通过多种途径暴露给用户。以下链条均可在当前仓库中验证。构建阶段环境变量驱动的版本生成在 gensrc/script/Makefile 中gen_version目标会调用build-support/gen_build_version.py生成版本信息文件gen_version: ${PYTHON} ${CURDIR}/../../build-support/gen_build_version.py --cpp ${BUILD_DIR}/gen_cpp而 gen_build_version.py 的核心逻辑是通过get_version()读取环境变量STARROCKS_VERSION未设置时回退为UNKNOWN并采集 commit hash、构建类型、构建时间、构建用户、构建主机、发行版信息解析/etc/os-release与 CPU 架构platform.uname().machine分别生成C 侧be/src/common/version.h见 version.h中声明的STARROCKS_VERSION、STARROCKS_COMMIT_HASH、STARROCKS_BUILD_TYPE、STARROCKS_BUILD_ARCH等常量对应的version.cppJava 侧com.starrocks.common.Version类含STARROCKS_VERSION、STARROCKS_COMMIT_HASH等静态字段。因此最终打进发布包的版本号本质上由构建时设置的STARROCKS_VERSION环境变量决定这也保证了包名与二进制内部版本信息的一致性。运行阶段SQL 函数与命令行输出版本号在运行时主要暴露在以下几个位置SQL 函数在 gensrc/script/functions.py 中注册了version()与current_version()两个内置函数底层实现在 be/src/exprs_ext/utility/utility_functions.cpp返回STARROCKS_VERSION与STARROCKS_COMMIT_HASH拼接后的字符串。用户可直接执行SELECT version();或SELECT current_version();查看运行中的 BE 版本。命令行/日志be/src/common/util/debug_util.cpp 中的get_build_version()输出STARROCKS_VERSION-COMMIT_HASH并附带BuildType、Build distributor id、Build arch、构建时间与构建用户/主机信息get_short_version()则返回精简的版本-commit hash。监控指标be/src/service/service_metrics.cpp 将STARROCKS_VERSION作为build_info指标的version标签对外暴露便于监控系统按版本聚合。元数据be/src/storage/cluster_id_mgr.cpp 在生成集群标识相关文件时也会拼接STARROCKS_VERSION确保不同版本的存储侧标识可区分。从源码结构推断的实践要点版本语义上3.4.x系列均为向后兼容的补丁版本升级成本低、风险小是日常维护推荐路径跨MINOR如3.x→4.x或MAJOR升级时应结合 release_notes 中各版本的行为变更说明评估兼容性。生产环境建议优先选择无-rc后缀的正式版本包需要提前验证新特性的团队可选择对应MINOR初始版本的rc01/rc02预发布包进行测试但不应直接用于生产。发布包命名中 OS 与 ARCH 均为必填项选包时务必同时核对操作系统与 CPU 架构两维信息。结语掌握 StarRocks 的版本命名规范既能帮助你在升级时快速判断风险等级主/次/补丁也能让你在下载部署时准确匹配软件包。更进一步通过 gen_build_version.py 与 version.h 等源码你还可以理解版本号从构建注入到运行时输出的完整链路从而更从容地构建、排查与运维 StarRocks 集群。【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考