Spec-Zone.ru › Homebrew

Linux CI в homebrew/core

В настоящее время для сборки бинарных пакетов в homebrew/core мы используем Ubuntu 24.04.

Для CI мы стремимся использовать самую старую поддерживаемую версию Ubuntu LTS, в которой доступна необходимая нам версия GCC.

Ubuntu и другие дистрибутивы Linux

По состоянию на 2022 год около 77% наших пользователей используют Ubuntu. Именно поэтому мы выбрали этот дистрибутив для базового образа CI. Мы успешно используем Ubuntu для CI начиная с версии 14.04. Версии Ubuntu LTS поддерживаются в течение 5 лет. Новая версия LTS выпускается каждые 2 года.

Наши бинарные пакеты совместимы и с другими дистрибутивами, например Debian/CentOS, даже если они собраны в Ubuntu.

Предыдущие и следующие версии

Дистрибутив Glibc GCC libstdc++ Стандартный период обслуживания безопасности LTS
Ubuntu 22.04 2.35 11 6.0.30 (gcc-12) С 2022 по 2027 год
Ubuntu 24.04 2.39 13 6.0.33 (gcc-14) С 2024 по 2029 год
Ubuntu 26.04 2.43 15 6.0.35 (gcc-16) С 2026 по 2031 год
Ubuntu 28.04 ? ? ? ?

В столбце libstdc++ указана версия SONAME общей библиотеки (например, libstdc++.so.6.0.30). Версия GCC в скобках — это версия пакета среды выполнения Ubuntu GCC/libstdc++, предоставляющего этот SONAME; она может отличаться от версии в столбце GCC, где указана версия системного компилятора по умолчанию, используемого в CI.

Зачем переходить на более новую версию?

Homebrew — менеджер пакетов с непрерывным выпуском обновлений. Мы стараемся как можно быстрее предоставлять самые новые версии программ для macOS и Linux.

Когда формуле требовалась более новая версия GCC, поскольку используемая нами в CI версия GCC была слишком старой, нам приходилось добавлять в зависимости этой формулы более новую версию GCC из Homebrew. Все формулы, зависящие от неё на уровне C++, сразу же тоже начинали зависеть от GCC из Homebrew. Мы предприняли шаги, чтобы это больше не задерживало обновления GCC, однако такая ситуация всё равно усложняет сопровождение. Эта проблема чаще возникает с формулами, которые активно развиваются и стремятся использовать новые возможности C++. Мы решили, что формулы, которые поступают правильно и поддерживаются в актуальном состоянии, не должны создавать дополнительную нагрузку на сопровождение. Сопровождающим Homebrew вполне разумно отправлять исправления в вышестоящие проекты, если формулы не работают с новыми компиляторами. Но гораздо менее разумно отправлять исправления лишь потому, что наш системный компилятор слишком старый.

Обратите внимание: большему числу пользователей придётся устанавливать glibc, поскольку их версия glibc часто будет слишком старой. Это не так удобно, как использовать более новую версию GCC, поскольку мы не тестируем такую конфигурацию в CI. Поэтому мы стремимся найти баланс между самой новой версией GCC и более консервативной версией glibc.

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/Linux-CI

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API