homebrew/core 中的 Linux CI

我们当前在 homebrew/core 中使用 Ubuntu 22.04 进行灌装。

Ubuntu 与其他 Linux 发行版

截至 2022 年,约 77% 的用户使用 Ubuntu。这就是我们为基本 CI 镜像选择此发行版的原因。自 14.04 版本以来,我们已成功将 Ubuntu 用于 CI。Ubuntu LTS 版本受支持 5 年。每 2 年发布一个新的 LTS 版本。

即使在 Ubuntu 上编译,我们的灌装也与 Debian/CentOS 等其他发行版兼容。

过去和未来版本

我们已将 CI 迁移至 Ubuntu 22.04

从 Ubuntu 16.04 迁移至 Ubuntu 22.04(因此跳过了版本 18.04 和 20.04)花费的时间比预期要长。

我们计划从 2022 年起进行定期更新。我们的目标是为 CI 使用最新的 Ubuntu LTS 版本。

我们将在其发布后最早 3 个月,理想情况下不超过 12 个月开始为 CI 使用最新的 Ubuntu LTS 版本。

发行版 Glibc GCC 使用情况
Ubuntu 14.04 2.19 4 2014 年至 2017 年
Ubuntu 16.04 2.23 5 2017 年至 2022 年
Ubuntu 22.04 2.35 11 2022 年至 2024 年
Ubuntu 24.04 ? ? 2024 年至 2026 年

为什么总是使用最新版本?

Homebrew 是一个滚动发布包管理器。我们尝试在 macOS 和 Linux 上尽可能快地发布最新内容。

当一个公式需要较新的 GCC,因为我们在 CI 中的主机 GCC 太旧时,我们需要使该公式依赖于较新的 Homebrew GCC。该公式的所有 C++ 依赖项也会立即获取对 Homebrew GCC 的依赖项。虽然我们已采取措施确保不再阻碍 GCC 更新,但它仍然会造成维护负担。对于非常积极维护并尝试使用 C++ 的较新功能的公式,此问题更有可能发生。我们决定,对于通过保持最新状态来做正确的事情的公式,我们不应该有维护负担。当公式无法与较新的编译器配合使用时,Homebrew 维护人员向源头上提交修复非常有意义。由于我们的主机编译器太旧,Homebrew 维护人员提交修复没有多大意义。

请注意,对于更多用户来说,需要安装glibc,因为他们的glibc版本通常太旧:磁盘空间很便宜,我们可以为我们的用户处理这种情况。当更新到新的 LTS 版本并且在最初几个月内对新 Ubuntu 的采用率仍然很低时,通常会出现这种情况。出于上述相同的原因:我们更愿意保持领先地位,并轻推我们的用户考虑更新他们的操作系统。

Fork me on GitHub