ЧАВО
Есть ли глоссарий терминов?
В сборнике рецептов формул есть список терминологии Homebrew.
Как обновить мои локальные пакеты?
Сначала обновите все определения пакетов (формулы) и сам Homebrew:
brew update
Теперь можно перечислить устаревшие пакеты (кеги) с помощью:
brew outdated
Обновить всё можно так:
brew upgrade
Или обновить конкретную формулу:
brew upgrade <formula>
Как остановить обновление определённых формул?
Чтобы остановить обновление/установку чего-либо:
brew pin <formula>
Чтобы снова разрешить обновление формулы:
brew unpin <formula>
Обратите внимание, что зафиксированные устаревшие формулы, от которых зависит другая формула, необходимо обновлять при необходимости, так как мы не разрешаем создание формул на основе устаревших версий. Если это нежелательно, вы можете вместо этого использовать brew extract чтобы сохранить свою копию формулы в собственном репозитории.
Как удалить Homebrew?
Чтобы удалить Homebrew, запустите скрипт удаления из репозитория Homebrew/install: ссылка.
Как сохранить старые версии формулы при обновлении?
Homebrew автоматически удаляет старые версии каждой формулы, которая обновляется с помощью brew upgrade, и периодически выполняет дополнительную очистку каждые 30 дней.
Чтобы отключить автоматическую brew cleanup:
export HOMEBREW_NO_INSTALL_CLEANUP=1
Чтобы отключить автоматическую brew cleanup только для формул foo и bar:
export HOMEBREW_NO_CLEANUP_FORMULAE=foo,bar
Когда автоматическая brew cleanup отключена, при удалении формулы удаляется только последняя установленная версия. Она не удаляет все версии формулы, которые вы могли установить ранее. Homebrew продолжит попытки установить самую последнюю известную версию при запуске brew upgrade. Это может быть неожиданно.
В этом случае, чтобы полностью удалить формулу, можно запустить brew uninstall --force <formula>. Будьте осторожны, так как это деструктивная операция.
Почему brew upgrade <formula> или brew install <formula> также обновляют множество других элементов?
Homebrew не поддерживает произвольное смешивание и сопоставление версий формул, поэтому все, от чего зависит формула, и все, от чего зависит она сама, необходимо обновлять до последней версии, так как это единственная комбинация формул, которую мы тестируем. В результате любая команда upgrade или install может обновить множество других (по-видимому, не связанных) формул, особенно если необходимо обновление чего-то важного, например, python или openssl.
Где происходит загрузка?
brew --cache
Как правило: ~/Library/Caches/Homebrew
Мои приложения Mac не находят утилиты Homebrew!
Приложения GUI на macOS по умолчанию не имеют префикса Homebrew в своих PATH. Если вы используете Mountain Lion или более позднюю версию, можно исправить это, запустив sudo launchctl config user path "$(brew --prefix)/bin:${PATH}" и перезапустив систему, как описано в man launchctl. Обратите внимание, что это устанавливает launchctl PATH для всех пользователей. Для более ранних версий macOS см. эту страницу.
Как внести свой вклад в Homebrew?
Прочитайте наши руководящие принципы сотрудничества.
Почему вы компилируете всё?
Homebrew предоставляет предварительно скомпилированные бинарные пакеты для многих формул. Они называются бутылками и доступны по адресу https://github.com/Homebrew/homebrew-core/packages.
Если доступны, предварительно скомпилированные бинарные файлы будут использоваться по умолчанию, за исключением следующих случаев:
- Вызван параметр
--build-from-source. - Для текущей версии ОС на машине нет доступной бутылки. (Бутылки для macOS генерируются только для поддерживаемых версий macOS.)
- Homebrew установлен в другой префикс, отличный от стандартного (хотя некоторые бутылки это поддерживают).
- В команду установки были переданы параметры формулы. Например,
brew install <formula>будет пытаться найти предварительно скомпилированную бинарную бутылку, ноbrew install --with-foo <formula>вызовет сборку из исходного кода.
Мы стремимся к тому, чтобы все было в бутылках.
Как получить формулу из запроса на включение другого разработчика?
brew install hub brew update cd "$(brew --repository homebrew/core)" hub fetch github_username hub pr checkout pull_request_number
Почему я должен установить Homebrew по умолчанию?
Предварительно скомпилированные бинарные пакеты (известные как бутылки) многих формул могут быть использованы только при установке по умолчанию, в противном случае их необходимо собирать из исходного кода. Сборка из исходного кода занимает много времени, склонна к ошибкам и не поддерживается. Стандартный префикс:
-
/usr/localдля macOS на Intel, -
/opt/homebrewдля macOS на Apple Silicon/ARM, и -
/home/linuxbrew/.linuxbrewдля Linux.
Сделайте себе одолжение и установите по умолчанию, чтобы вы могли использовать наши предварительно скомпилированные бинарные пакеты. Установка в другой префикс на свой страх и риск!
Почему стандартный префикс установки /opt/homebrew на Apple Silicon?
Префикс /opt/homebrew был выбран, чтобы разрешить сосуществование установок в /opt/homebrew для Apple Silicon и /usr/local для Rosetta 2 и использование бутылок.
Почему стандартный префикс установки /home/linuxbrew/.linuxbrew на Linux?
Префикс /home/linuxbrew/.linuxbrew был выбран, чтобы пользователи без прав администратора всё ещё могли воспользоваться предварительно скомпилированными бинарными файлами через учётную запись с ролью linuxbrew. Если у вас нет прав администратора, попросите администратора создать для вас учётную запись с ролью linuxbrew с домашним каталогом /home/linuxbrew.
Почему Homebrew говорит, что sudo — это плохо?
tl;dr Sudo небезопасен, и вы установили TextMate.app без sudo, всё равно.
Homebrew отказывается работать с sudo.
Вы должны использовать sudo только для инструментов, которым доверяете. Конечно, Homebrew можно доверять 😉 — но вы доверяете многомегабайтному Makefile, который запускает Homebrew? Разработчики часто лучше понимают C++, чем make синтаксис. Слишком большой риск использовать sudo для подобных вещей. Это может изменить (или загрузить) любые файлы на вашей системе. И действительно, мы видели, как некоторые скрипты сборки пытались изменить /usr даже когда префикс был указан как что-то совершенно иное.
Мы используем песочницу macOS, чтобы предотвратить это, но это не работает, когда приложение выполняется как пользователь root (который также имеет права чтения и записи практически ко всему на системе).
Вы chown root /Applications/TextMate.app? Вероятно, нет. Так ли уж важно chown root wget?
Если вам нужно запустить Homebrew в многопользовательской среде, создайте отдельную учётную запись пользователя специально для использования Homebrew.
Почему не документирована конкретная команда?
Если её нет в man brew, это, вероятно, внешняя команда с документацией, доступной с помощью --help.
Почему вы не слили мой запрос на включение?
Если все отзывы от администраторов учтены и все тесты пройдены, добавьте комментарий «bump». Иногда мы пропускаем запросы, их довольно много. Тем временем перебазируйте свой запрос на включение, чтобы его можно было легче слить.
Могу ли я сам редактировать формулы?
Да! Это легко! Просто brew edit <formula>. Вам не нужно отправлять изменения обратно в homebrew/core, просто отредактируйте формулу в соответствии со своими потребностями и brew install <formula>. В качестве бонуса, brew update сольёт ваши изменения с основным проектом, так что вы всё ещё сможете держать формулу в актуальном состоянии с вашими личными изменениями!
Могу ли я создать новые формулы?
Да! Это легко! Просто brew create URL. Homebrew откроет формулу в EDITOR, чтобы вы могли её редактировать, но, вероятно, она уже установлена; попробуйте: brew install <formula>. Если у вас возникнут проблемы, запустите команду с ключом --debug следующим образом: brew install --debug <formula>, который запустит оболочку отладки.
Если вы хотите, чтобы ваша новая формула стала частью homebrew/core или хотите узнать больше о написании формул, прочтите Сборник рецептов формул.
Почему формула была удалена или отключена?
Используйте brew log <formula> чтобы узнать! Вероятно, потому что у неё были нерешённые проблемы и/или наши аналитические данные показали, что она не получила широкого распространения.
Для отключённых и устаревших формул, запуск brew info <formula> также предоставит объяснение.
Homebrew — плохая аббревиатура, она слишком общая; почему она была выбрана?
Создатель Homebrew @mxcl не слишком беспокоился о теме пива и не предполагал, что проект может быть популярным. К тому времени, когда Макс понял, что проект популярен, было уже поздно. Однако сегодня первая запись в Google по запросу «homebrew» не связана с пивом 😉
Что означает «только кег»?
Это означает, что формула установлена только в хранилище и не связана со стандартным префиксом. Это означает, что большинство инструментов её не найдут. Вы можете узнать, почему формула была установлена как «только кег» и инструкции по её включению в PATH, выполнив команду brew info <formula>.
Вы можете изменить конфигурацию сборки инструмента для поиска зависимостей «только кег». Или вы можете связать формулу, если это необходимо, с помощью brew link <formula>, хотя это может привести к непредвиденному поведению, если вы затеняете программы macOS.
Как указать разные аргументы configure для формулы?
brew edit <formula> и отредактировать формулу напрямую. В настоящее время нет других способов сделать это.
Почему я не могу открыть приложение Mac от неидентифицированного разработчика?
Вероятно, некоторые приложения отобразят вам сообщение подобного содержания:
Это функция безопасности от Apple. Самое важное — вы можете разрешить отдельным приложениям быть исключёнными из этой функции. Это позволит приложению работать, в то время как остальная часть системы останется под защитой.
Всегда оставляйте включённую защиту системы и отключайте её только для конкретных приложений по мере необходимости.
Если вы уверены, что хотите доверять приложению, вы можете отключить защиту для него, щелкнув его значок правой кнопкой мыши и выбрав Открыть:
В открывшемся диалоговом окне нажмите кнопку Открыть, чтобы macOS постоянно разрешил приложению работать на этом Mac. Делайте это только в том случае, если вы уверены, что доверяете приложению.
В качестве альтернативы вы можете указать --no-quarantine флаг во время установки, чтобы не добавлять эту функцию в конкретное приложение.
Почему некоторые приложения не включаются во время brew upgrade?
После выполнения brew upgrade, вы можете заметить, что некоторые кеши, которые, по вашему мнению, должны обновляться, этого не делают.
Как вы, вероятно, знаете, многие программы macOS могут обновляться самостоятельно:
Это может привести к конфликтам при совместном использовании с механизмом upgrade Homebrew Cask.
Когда приложения используют собственные механизмы для обновления, это происходит без ведома Homebrew Cask, из-за чего обе версии расходятся. Если вы затем обновите приложение через Homebrew Cask, имея в базе данных более старую версию, вы получите понижение.
Есть несколько идей для решения этой проблемы:
- Попробовать предотвратить автоматические обновления приложения. Это не будет универсальным решением и может привести к проблемам. Большинство приложений в Homebrew Cask — закрытые, поэтому нам пришлось бы гадать. Также по этой причине нет возможности привязки кешей к определённой версии.
- Попробовать извлечь версию установленного приложения и сравнить её с кешем, чтобы решить, что делать в этом случае. Это сложное решение, которое нарушит другие части нашей методологии, такие как использование версий для интерполяции
urlзначений (определённо выигрыш в плане поддерживаемости). Это решение также не универсально, так как многие разработчики приложений не придерживаются согласованных схем версионирования (и пакеты приложений должны содержать две строки версии) и оно не работает со всеми типами поддерживаемого программного обеспечения.
Поэтому мы оставляем приложения как есть. Всё, установленное с помощью Homebrew Cask, должно вести себя так же, как если бы оно было установлено вручную. Но поскольку мы также хотим поддерживать приложения, которые не обновляются самостоятельно, мы добавляем auto_updates true к кешам для приложений, которые это делают, что исключает их из brew upgrade.
Кеши, использующие version :latest, также исключены, потому что у нас нет способа отслеживать их установленную версию. Это помогает попросить разработчиков таких приложений предоставлять версии с указанием версии (т. е. включить версию в путь загрузки url).
Если вы всё ещё хотите принудительно обновить приложение с помощью Homebrew Cask, вы можете указать его явно в команде upgrade:
brew upgrade <cask>
Или использовать флаг --greedy:
brew upgrade --greedy
Дополнительные сведения см. в разделе upgrade brew руководства.
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/FAQ