Версии
homebrew/core поддерживает несколько версий формул со специальным форматом именования. Например, формула для GCC 6 называется gcc@6.rb и начинается с class GccAT6 < Formula.
Допустимые формулы с версиями
Формулы с версиями, которые мы включаем в homebrew/core, должны соответствовать следующим стандартам:
- Программное обеспечение с версиями должно компилироваться на всех поддерживаемых Homebrew версиях macOS.
- Формулы с версиями должны отличаться по основным/дополнительным (не по патчам) версиям от текущей стабильной версии. Это связано с тем, что версии патчей указывают на исправления ошибок или обновления безопасности, и мы хотим гарантировать, что вы применяете обновления безопасности.
- Нестабильные версии (альфа, бета, версии разработки) не допускаются для формул с версиями (или без версий).
- Upstream должен иметь ветку релизов для каждой версии формулы и иметь явную политику выпуска обновлений безопасности для каждой версии при необходимости. Например, PHP 7.0 не был поддерживаемой версией, но PHP 7.2 был в январе 2020 года. В отличие от этого, большинство проектов программного обеспечения структурированы таким образом, чтобы выпускать обновления безопасности только для своих последних версий, поэтому более ранние версии не подходят для версиирования.
- Формулы с версиями должны использовать один код с основной формулой. Если проект разделен на другой репозиторий, мы рекомендуем создать новую формулу (
formula2вместоformula@2илиformula@1). - Формулы, которые зависят от формул с версиями, не должны зависеть от одних и тех же формул на двух разных версиях дважды в своих рекурсивных зависимостях. Например, если вы зависите от
openssl@1.0иfoo, иfooзависит отopenssl, то вам нужно использоватьopenssl. - Формулы с версиями должны быть привязываемыми одновременно с их неверсионными аналогами только если проект upstream предоставляет поддержку, например, с использованием бинарных файлов с суффиксом. Если это невозможно, используйте
keg_only :versioned_formulaдля возможности установки нескольких версий одновременно пользователями. keg_only :versioned_formulaне должноpost_installничего вHOMEBREW_PREFIX, что конфликтует или дублирует основной аналог (или другие формулы с версиями). Например, формулаnode@6не должна устанавливать свойnpmвHOMEBREW_PREFIX, как это делает формулаnode.- Ожидается, что отправленные формулы с версиями будут использоваться большим количеством людей. Если это перестанет быть так, они будут удалены. Мы постараемся не удалять те, которые входят в список 3000 самых популярных
install_on_requestформул. - Формулы с версиями не должны иметь
resourceс требованиями к обновлениям безопасности. Например, формулаnode@6не должна иметьnpmресурс, а должна полагаться наnpmпредоставленный архивом upstream. - Формулы с версиями должны быть максимально похожими и разумными по сравнению с основными формулами. Создание или обновление формулы с версией должно стать возможностью задать вопросы к основной формуле и наоборот, например, можно ли удалить или сделать по умолчанию некоторые неиспользуемые или бесполезные параметры?
- Не более пяти версий формулы (включая основную) будут поддерживаться в любой момент, независимо от использования. При удалении формул, нарушающих это правило, мы будем стремиться делать это на основе использования и статуса поддержки, а не возраста.
- Формулы с версиями должны быть стабильны с точки зрения ABI на протяжении всего срока существования ветки версии. Обновления формулы с версией не должны вводить несовместимости ABI или иным образом требовать от зависимостей повышения ревизии. На практике это означает, что их зависимостям никогда не нужно будет повышать ревизию
revision, чтобы перестроить их относительно новых версий. Обновления версий, нарушающие это правило, должны быть отклонены, а формула с этого момента будет устаревшей.
Версии Homebrew не должны использоваться для «привязки» формул к вашим личным требованиям. Вместо этого вы должны создать свой собственный tap для формул, которые вы или ваша организация хотите контролировать, или для тех, которые не соответствуют приведенным выше стандартам. Программное обеспечение, которое регулярно выпускает API или ABI, по-прежнему должно соответствовать всем вышеперечисленным требованиям; то, что brew upgrade сломалось для вас, не является аргументом для добавления и поддержки формулы для вас.
Если формула в настоящее время существует в репозитории Homebrew/homebrew-core или существовала в прошлом (т. е. была перенесена или удалена), вы можете восстановить ее для собственного использования с помощью команды brew extract. Это скопирует нужную версию формулы в ваш пользовательский tap. Например, если ваш проект зависит от automake версии 1.12, а не от последней версии, вы можете получить формулу automake версии 1.12, выполнив brew extract automake <YOUR_GITHUB_USER>/<YOUR_TAP_REPOSITORY_NAME> --version=1.12. Формулы, полученные таким способом, могут содержать устаревшие, отключенные или удаленные синтаксические конструкции Homebrew (например, контрольные суммы могут быть sha1 вместо sha256); команда brew extract не редактирует или обновляет формулы, чтобы они соответствовали текущим стандартам и требованиям к стилю.
Мы можем временно добавить формулы с версиями для собственных нужд, которые не соответствуют этим стандартам, в homebrew/core. Наличие там формулы с версией не означает, что она будет поддерживаться неопределенно или что мы готовы принять любые другие версии, которые не соответствуют приведенным выше требованиям.
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/Versions