runner-images 实战指南:Ubuntu 26.04 Arm64 托管运行器镜像软件清单全解析
【免费下载链接】runner-imagesGitHub Actions runner images项目地址: https://gitcode.com/GitHub_Trending/ru/runner-images
本文以runner-images仓库中 Ubuntu 26.04 Arm64 镜像说明文档 为主体,完整梳理该镜像的操作系统基线、预装软件生态、数据库与服务使用方式,并结合仓库内的 toolset 配置、Packer 模板 与测试用例,从源码层面解读版本如何被定义、校验与生成报告。读完本文,你将能快速判断 Ubuntu 26.04 Arm64 运行器是否满足自己的 CI/CD 依赖需求,并掌握 PostgreSQL、MySQL、Homebrew 等关键组件的正确使用姿势。
镜像基线信息
该镜像基于 Ubuntu 26.04.1 LTS(代号为 26.04 系列的新一代 LTS 版本),整体基线如下:
- OS Version: 26.04.1 LTS
- Kernel Version: 7.0.0-1012-azure(Azure 定制内核)
- Image Version: 20260907.118.1(镜像构建版本号,随构建流水线递增)
- Systemd version: 259.5-0ubuntu3.4
从仓库的 locals.ubuntu.pkr.hcl 可以看出,该 Arm64 镜像对应的 Azure Marketplace 源镜像 SKU 为canonical:ubuntu-26_04-lts:server-arm64,默认系统盘为 75 GB;构建使用 Packer 的azure-armbuilder(见 source.ubuntu.pkr.hcl),最终产物会发布到 Azure Shared Image Gallery,供 GitHub Actions 与 Azure DevOps 的托管运行器使用。
在镜像内部,报告生成脚本 Generate-SoftwareReport.ps1 通过读取IMAGE_VERSION环境变量及系统命令来采集以上四项基线信息,并写入软件报告文档;而 Common.Helpers.psm1 与 os.sh 则分别以lsb_release -rs和uname -m判断是否为 Ubuntu 26.04 / aarch64 架构,报告生成与安装脚本据此对 x64 与 Arm64 平台做差异化处理(例如仅 x64 镜像预装 Miniconda、Swift 等)。
版本公告与镜像演进要点
原文档顶部的公告区包含了与本镜像强相关的四条演进信息,可作为版本选型的依据:
- PostgreSQL 现已可用:Ubuntu Arm64 镜像开始提供 PostgreSQL(具体版本见下文数据库章节)。
- Podman 将在 Ubuntu 22.04 与 24.04 镜像上降级:如果工作流依赖 Podman 的特定行为,升级到 26.04 可以获得更新版本(本镜像预装 Podman 5.7.0)。
- Ubuntu 22.04 镜像弃用倒计时:基于 Ubuntu 22 的运行器镜像将开始弃用流程并最终完全停止支持,建议尽早迁移到 24.04 / 26.04 系列。
- Ubuntu 26.04 及 26.04 Arm 作为公共预览发布:本镜像即该公共预览的产物,适用于提前验证新基线兼容性的用户。
语言与运行时
镜像为多语言项目预装了完整的运行时体系:
- Bash5.3.9(1)-release
- Clang / Clang-format / Clang-tidy: 20.1.8、21.1.8、22.1.2 三个大版本并存(对应 toolset 配置 中的 clang
20/21/22,默认版本为 21) - Dash0.5.12-12ubuntu3
- GNU C++: 13.4.0、14.3.0、15.2.0(toolset 中 gcc 定义为
g++-13/14/15三套工具链) - GNU Fortran: 13.4.0、14.3.0、15.2.0
- Kotlin2.4.20
- Node.js24.20.0
- Perl5.40.1
- Python3.14.4
- Ruby3.3.8
报告生成脚本 Generate-SoftwareReport.ps1 使用Get-ClangToolVersions、Get-CPPVersions、Get-FortranVersions等辅助函数逐项采集版本号,并针对 Ubuntu 26 跳过了 Swift(注释明确说明"尚无 Ubuntu 26 支持"),这正是文档中未见 Swift 条目的原因。
包管理工具
预装的包管理工具覆盖了主流生态:
- cpan1.64
- Helm4.2.4
- Homebrew6.0.22
- Npm11.19.0
- Pip / Pip325.1.1
- Pipx1.17.2
- RubyGems3.6.7
- Vcpkg(构建自 commit 04a9d8e521)
- Yarn1.22.22
环境变量
| Name | Value |
|---|---|
| CONDA | (未设置) |
| VCPKG_INSTALLATION_ROOT | /usr/local/share/vcpkg |
Homebrew 使用注意事项
Homebrew 虽已预装,但默认未加入 PATH,需要显式执行以下命令激活:
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"这是因为镜像构建时保留了 Linuxbrew 的独立目录(/home/linuxbrew),避免其与系统 apt 包产生冲突。
项目构建与管理工具
- Ant1.10.15
- Gradle9.7.1
- Maven3.9.15(与 toolset 的 java.maven 配置 一致)
与 22.04/24.04 镜像相比,26.04 Arm64 镜像不再预装 Lerna 与 Sbt(报告脚本中这两个工具均限定在特定平台分支内生成)。
常用工具
- Ansible2.21.3
- AzCopy10.32.7(同时提供
azcopy与azcopy10两个别名) - Bazel9.2.0、Bazelisk1.28.1
- Buildah1.42.1、Podman5.7.0、Skopeo1.21.0-dev(容器原生工具链)
- CMake4.4.3(toolset 中 cmake 配置为
latest)、Ninja1.13.2 - Docker 全家桶:Client 29.4.2 / Server 29.4.2 / Buildx 0.37.0 / Compose 5.1.3 / Amazon ECR Credential Helper 0.12.0。对应的 docker 组件配置 中,docker-ce 与 cli 固定为 29.4.2,buildx 插件下载 linux-arm64 资产,compose 插件下载 linux-aarch64 资产
- Git2.55.0、Git LFS3.8.0、Git-ftp1.6.0
- jq1.8.1、yq4.53.6、yamllint1.38.0
- Kubernetes 生态:Kind 0.33.0、Kubectl 1.37.0、Kustomize 5.8.1、Minikube 1.39.0
- n10.2.0、nvm0.40.7(Node 版本管理器)
- OpenSSL3.5.5-1ubuntu3.5
- Packer1.16.0
- zstd1.5.7
CLI 工具(云厂商与协作)
- AWS CLI2.36.40 +AWS CLI Session Manager Plugin1.2.835.0 +AWS SAM CLI1.166.1
- Azure CLI2.90.0 +Azure DevOps 扩展1.0.8
- GitHub CLI2.100.0
- Google Cloud CLI583.0.0
Java 多版本矩阵
| Version | Environment Variable |
|---|---|
| 11.0.32+9 | JAVA_HOME_11_X64 |
| 17.0.20+1 | JAVA_HOME_17_X64 |
| 21.0.12+1 | JAVA_HOME_21_X64 |
| 25.0.4+1(默认) | JAVA_HOME_25_X64 |
对应 toolset 的 java 配置:versions为 11/17/21/25,default为 25,Maven 固定为 3.9.15。在 workflow 中可通过JAVA_HOME_25_X64等环境变量精确切换 JDK 版本。
PHP 工具
- PHP8.5.4(对应 toolset 中 php 版本
8.5) - Composer2.10.3
- PHPUnit8.5.54
需要注意官方说明:Xdebug 与 PCOV 扩展均已安装,但默认仅启用 Xdebug。如需使用 PCOV 进行覆盖率统计,需自行调整 PHP 扩展配置。
Rust 工具
- Cargo1.98.1
- Rust1.98.1
- Rustdoc1.98.1
- Rustup1.29.1
附加包:Rustfmt1.9.0。
浏览器与驱动
- Selenium server4.48.0
- Mozilla Firefox155.0
- Geckodriver0.37.1
环境变量:
| Name | Value |
|---|---|
| CHROMEWEBDRIVER | (未设置) |
| EDGEWEBDRIVER | (未设置) |
| GECKOWEBDRIVER | /usr/local/share/gecko_driver |
| SELENIUM_JAR_PATH | /usr/share/java/selenium-server.jar |
注意:该镜像仅预装 Firefox + Geckodriver 的浏览器测试组合,Chrome/Edge WebDriver 路径未设置,对应 toolset 中 selenium 配置为4。
.NET 工具
- .NET Core SDK:8.0(4 个补丁版本 8.0.130/206/319/424)、9.0(9.0.120/205/317)、10.0(10.0.111/204/303/400)
- nbgv3.10.94+dea9a6c17c(.NET 版本管理工具,对应 toolset 的 dotnet.tools 配置)
数据库:PostgreSQL 与 MySQL
- sqlite33.46.1
- PostgreSQL18.6
- MySQL8.4.11-0ubuntu0.26.04.1
PostgreSQL 使用要点
User: postgres PostgreSQL service is disabled by default. Use the following command as a part of your job to start the service: 'sudo systemctl start postgresql.service'即默认情况下 PostgreSQL 服务不随系统启动,workflow 中需先显式拉起服务再连接。对应版本定义在 toolset 的 postgresql 配置 中(version: "18"),并可由 Databases.Tests.ps1 验证:测试会启动服务、用pg_isready检查 5432 端口是否接受连接,并将 psql/pg_config 客户端与服务器版本与 toolset 版本号做一致性比对。
MySQL 使用要点
User: root Password: root MySQL service is disabled by default. Use the following command as a part of your job to start the service: 'sudo systemctl start mysql.service'MySQL 同样默认关闭,且 root 账户的默认密码为root(仅适用于本地开发/CI 场景)。Databases.Tests.ps1 的冒烟测试展示了一个完整用法:sudo systemctl start mysql启动服务,mysql -h localhost -uroot -proot登录并创建/删除测试库,最后停止服务——这套流程可直接迁移到 workflow 中。
Cached Tools:版本缓存机制
镜像通过工具缓存(toolcache)预置了多版本运行时,供setup-*类 Action 免下载直接使用:
Go
- 1.24.13、1.25.14、1.26.8(toolset 中 go 配置 覆盖 1.24/1.25/1.26,默认
1.26.*)
Node.js
- 22.23.2、24.20.0(与 node 配置 的 22/24 两条版本线对应,默认 24)
Python
- 3.10.21、3.11.16、3.12.14、3.13.15、3.14.7(Python 配置 覆盖 3.10 至 3.14)
Ruby
- 3.2.11、3.3.12、3.4.10、4.0.6(Ruby 配置 覆盖 3.2 至 4.0)
toolcache 的校验逻辑见 Toolset.Tests.ps1:测试会遍历 toolset 中每个工具的每个版本,断言AGENT_TOOLSDIRECTORY下对应版本目录存在,并验证bin/go、bin/python、bin/node等可执行文件就位。注意与 x64 镜像的差异:本 Arm64 镜像的 PyPy 与 CodeQL 版本列表为空(对比 toolset-2604.json 中 x64 的 PyPy 3.9/3.10/3.11 与 CodeQL*可看出平台差异),即当前 Arm64 镜像暂未预置这两类缓存工具。
PowerShell 工具
- PowerShell7.6.5(toolset 中 pwsh 配置为
7.6)
预装模块:
- Az15.6.1(Azure PowerShell 模块)
- Microsoft.Graph2.39.0
- Pester5.9.0
- PSScriptAnalyzer1.25.0
Web 服务器
| Name | Version | ConfigFile | ServiceStatus | ListenPort |
|---|---|---|---|---|
| apache2 | 2.4.66 | /etc/apache2/apache2.conf | inactive | 80 |
| nginx | 1.28.3 | /etc/nginx/nginx.conf | inactive | 80 |
两个服务器默认均未启动(ServiceStatus 为 inactive),监听 80 端口,配置可分别在/etc/apache2/apache2.conf与/etc/nginx/nginx.conf调整后通过 systemd 拉起。
已安装的 apt 包清单(节选要点)
镜像通过 apt 安装了丰富的系统级工具,toolset 的 apt 配置 将其分为三类管理:
- vital_packages(核心包):bzip2、curl、g++、gcc、make、jq、tar、unzip、wget
- common_packages(常见包):autoconf、automake、dbus、gnupg2、libssl-dev、libicu-dev、libsqlite3-dev、locales、openssh-client、7zip-rar、pkg-config、python-is-python3、rpm、texinfo、tk、tree、tzdata、upx、xvfb、xz-utils、zsync 等
- cmd_packages(命令行工具):acl、aria2、binutils、bison、brotli、coreutils、file、flex、ftp、lz4、m4、netcat、net-tools、7zip、parallel、patchelf、pigz、pollinate、rsync、shellcheck、sqlite3、ssh、sshpass、sudo、systemd-coredump、swig、telnet、time、zip 等
值得关注的有:7zip(26.00+dfsg-1)与7zip-rar(26.00+ds-1)提供压缩/解压能力;fonts-noto-color-emoji保证 emoji 渲染;libgbm-dev、xvfb服务于无头图形/浏览器测试场景;upx提供可执行文件压缩;patchelf用于修改 ELF 二进制属性;shellcheck0.11.0 用于 Shell 脚本静态检查。完整清单以原文档 apt 包表格 为准。
源码级视角:报告、配置与测试如何闭环
要理解这份 Readme 为什么"值得信赖",可以看它的生产链路:
- 定义:所有版本范围与默认值都声明在 toolset-2604-arm64.json 中(工具缓存版本线、Java 默认版本、Docker 组件版本、apt 包分组、PostgreSQL/CMake/pwsh 版本等),安装脚本按此驱动镜像构建。
- 生成:构建完成后,Generate-SoftwareReport.ps1 通过 SoftwareReport 模块 逐项采集各工具真实版本号(而非直接照抄 toolset 声明),渲染出带目录的 Markdown 报告,即本文关联的 Ubuntu2604-Arm64-Readme.md。
- 校验:Toolset.Tests.ps1、Databases.Tests.ps1、RunAll-Tests.ps1 等在镜像发布前对缓存版本、数据库服务、web 服务器、各 CLI 工具逐一做冒烟验证,确保文档中的版本号与实际环境一致。
因此,这份文档既是一份"预装软件字典",也是排查 CI 依赖缺失、规划版本迁移(例如从 22.04 迁移到 26.04)的第一手权威依据。
总结与使用建议
Ubuntu 26.04 Arm64 运行器镜像以新一代 LTS 基线(26.04.1、Kernel 7.0.0-1012-azure)为基础,完整预置了多语言运行时、构建工具链、容器与 Kubernetes 工具、三大云厂商 CLI、Java/.NET/PHP/Rust 生态,以及 Go/Node/Python/Ruby 多版本缓存。在使用时请重点记住:
- 通过 toolset-2604-arm64.json 了解版本范围与默认值,版本升级以镜像更新(Image Version)节奏为准;
- PostgreSQL 与 MySQL 默认不启动,workflow 中需先
sudo systemctl start postgresql.service/sudo systemctl start mysql.service,MySQL root 密码为root; - Homebrew 需执行
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"后才能使用; - 该镜像为公共预览产物,PyPy、CodeQL 缓存暂未预置,浏览器测试仅提供 Firefox + Geckodriver,使用前请按此评估依赖的完备性。
【免费下载链接】runner-imagesGitHub Actions runner images项目地址: https://gitcode.com/GitHub_Trending/ru/runner-images
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考