homebrew/core
中的 Linux CI我们当前在 homebrew/core
中使用 Ubuntu 22.04 进行灌装。
截至 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 的采用率仍然很低时,通常会出现这种情况。出于上述相同的原因:我们更愿意保持领先地位,并轻推我们的用户考虑更新他们的操作系统。