runner-images 实战指南:Ubuntu 26.04 Arm64 托管运行器镜像软件清单全解析
2026/9/15 12:26:28 网站建设 项目流程

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 -rsuname -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 配置 中的 clang20/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-ClangToolVersionsGet-CPPVersionsGet-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

环境变量

NameValue
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(同时提供azcopyazcopy10两个别名)
  • 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 多版本矩阵

VersionEnvironment Variable
11.0.32+9JAVA_HOME_11_X64
17.0.20+1JAVA_HOME_17_X64
21.0.12+1JAVA_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

环境变量:

NameValue
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/gobin/pythonbin/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 服务器

NameVersionConfigFileServiceStatusListenPort
apache22.4.66/etc/apache2/apache2.confinactive80
nginx1.28.3/etc/nginx/nginx.confinactive80

两个服务器默认均未启动(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-devxvfb服务于无头图形/浏览器测试场景;upx提供可执行文件压缩;patchelf用于修改 ELF 二进制属性;shellcheck0.11.0 用于 Shell 脚本静态检查。完整清单以原文档 apt 包表格 为准。

源码级视角:报告、配置与测试如何闭环

要理解这份 Readme 为什么"值得信赖",可以看它的生产链路:

  1. 定义:所有版本范围与默认值都声明在 toolset-2604-arm64.json 中(工具缓存版本线、Java 默认版本、Docker 组件版本、apt 包分组、PostgreSQL/CMake/pwsh 版本等),安装脚本按此驱动镜像构建。
  2. 生成:构建完成后,Generate-SoftwareReport.ps1 通过 SoftwareReport 模块 逐项采集各工具真实版本号(而非直接照抄 toolset 声明),渲染出带目录的 Markdown 报告,即本文关联的 Ubuntu2604-Arm64-Readme.md。
  3. 校验: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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询