news 2026/9/17 7:25:25

StarRocks 版本命名规范与软件包命名规则全解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
StarRocks 版本命名规范与软件包命名规则全解

StarRocks 版本命名规范与软件包命名规则全解

【免费下载链接】starrocksThe world's 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.33.4等版本线即属于此范畴。

PATCH(补丁版本)

当进行向后兼容的缺陷修复时,补丁版本号递增。这通常对应 Bug 修复或小幅改进,不影响软件的主要功能与 API。例如3.4.13.4.2都是针对3.4.0的补丁版本。

PRERELEASE(预发布标识)

在版本号后追加预发布标识,表示该构建面向早期采用者进行测试。预发布标识会标明预发布版本的序号,例如rc01rc02。目前 StarRocks 唯一使用的预发布标签是rc后跟两位数字(如rc01)。

:::note 注意 Release Candidate(候选发布版)仅为初始次版本和主版本构建。例如3.4.0-rc014.0.0-rc01;也就是说,补丁版本(如3.4.1)通常不会再出-rc01预发布包。 :::

版本号实例解读

官方文档给出了三个典型样例,可直接对照理解:

版本号含义
3.4.0正式发布版本(GA 版本)
3.4.0-rc013.4.0的第一个预发布版本。例如3.3版本线也曾发布过第二个预发布版本3.3.0-rc02
3.4.13.4.2Bug 修复版本(补丁版本)

从仓库的 release_notes 目录 也可以验证这一规律:例如 release-3.4.md 中按3.4.03.4.1 (Yanked)3.4.23.4.3……3.4.10的顺序罗列了各补丁版本的行为变更与修复项,其中3.4.1 (Yanked)还标注了“被撤回”的状态——这说明补丁版本虽小,但发布流程同样遵循严格的评审与回溯机制。

软件包命名规则

软件发布包的命名约定为:

StarRocks-x.y.z[-rcxx]{-os}{-arch}.tar.gz

即主形式为Product-version-os-arch,各组成部分说明如下:

  1. x.y.z:遵循上述三位版本号规则;-rcxx为可选的预发布版本号,如-rc01-rc02
  2. OS(操作系统):目前包括ubuntucentos必填
  3. ARCH(CPU 架构):目前为amd64必填(截至本文档编写时,社区版暂未提供arm64构建包)。

软件包命名示例

  1. StarRocks-3.4.0-rc01-ubuntu-amd64.tar.gz3.4.0的预发布版本,面向 Ubuntu Linux 构建。
  2. 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_VERSIONSTARROCKS_COMMIT_HASHSTARROCKS_BUILD_TYPESTARROCKS_BUILD_ARCH等常量对应的version.cpp
  • Java 侧com.starrocks.common.Version类(含STARROCKS_VERSIONSTARROCKS_COMMIT_HASH等静态字段)。

因此,最终打进发布包的版本号本质上由构建时设置的STARROCKS_VERSION环境变量决定,这也保证了包名与二进制内部版本信息的一致性。

运行阶段:SQL 函数与命令行输出

版本号在运行时主要暴露在以下几个位置:

  • SQL 函数:在 gensrc/script/functions.py 中注册了version()current_version()两个内置函数,底层实现在 be/src/exprs_ext/utility/utility_functions.cpp,返回STARROCKS_VERSIONSTARROCKS_COMMIT_HASH拼接后的字符串。用户可直接执行SELECT version();SELECT current_version();查看运行中的 BE 版本。
  • 命令行/日志:be/src/common/util/debug_util.cpp 中的get_build_version()输出STARROCKS_VERSION-COMMIT_HASH,并附带BuildTypeBuild distributor idBuild 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.x4.x)或MAJOR升级时,应结合 release_notes 中各版本的行为变更说明评估兼容性。
  • 生产环境建议优先选择-rc后缀的正式版本包;需要提前验证新特性的团队,可选择对应MINOR初始版本的rc01/rc02预发布包进行测试,但不应直接用于生产。
  • 发布包命名中 OS 与 ARCH 均为必填项,选包时务必同时核对操作系统与 CPU 架构两维信息。

结语

掌握 StarRocks 的版本命名规范,既能帮助你在升级时快速判断风险等级(主/次/补丁),也能让你在下载部署时准确匹配软件包。更进一步,通过 gen_build_version.py 与 version.h 等源码,你还可以理解版本号从构建注入到运行时输出的完整链路,从而更从容地构建、排查与运维 StarRocks 集群。

【免费下载链接】starrocksThe world's 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 7:25:05

Windows PE + DiskGenius:系统备份与恢复最全实操指南

电脑用久了,系统卡顿、蓝屏、中病毒,这些问题几乎每个人都遇到过。更头疼的是,C盘空间莫名其妙就满了,或者硬盘出现坏道导致数据岌岌可危。这个时候,一套靠谱的系统备份与恢复方案就显得格外重要。我自己这些年折腾下来…

作者头像 李华
网站建设 2026/9/17 7:25:03

SpringBoot构建高并发拍卖系统核心技术解析

1. 项目背景与核心价值拍卖系统作为电子商务领域的重要分支,在数字化浪潮中展现出独特的商业价值与技术挑战。基于SpringBoot的Java网上拍卖系统,本质上是通过现代Web技术重构传统拍卖流程,实现从线下锤声到线上点击的数字化转型。我在2018年…

作者头像 李华
网站建设 2026/9/17 7:21:21

RTSP协议解析与低延迟直播优化实践

1. RTSP直播技术概述RTSP(Real Time Streaming Protocol)作为流媒体领域的经典协议,已经服务了视频监控、在线教育、视频会议等场景超过二十年。不同于HTTP协议的请求-响应模式,RTSP通过建立持久连接实现媒体流的实时控制&#xf…

作者头像 李华
网站建设 2026/9/17 7:21:13

半导体掺杂浓度与费米能级:载流子计算、工艺与方块电阻

简介:围绕半导体掺杂原理整理的入门级知识文档,面向微电子、集成电路及材料相关专业学生与初入行的技术人员。内容从本征半导体导电能力低讲起,说明杂质对载流子数目的影响,再依次展开掺磷形成N型硅、掺硼形成P型硅的价电子变化&a…

作者头像 李华
网站建设 2026/9/17 7:19:42

SQL审核平台选型:Yearning与Archery全面对比

1. 为什么需要独立的 SQL 审核平台:从“人肉审查”到“流程化管控”1.1 一条 SQL 引发的线上事故,往往就在一“念”之间我在过去几年里见过太多类似的情况:开发同学在测试环境跑得好好的DELETE FROM orders WHERE status expired&#xff0c…

作者头像 李华