Spec-Zone.ru › Homebrew

Советы и рекомендации

Установка предыдущих версий формул

Некоторые формулы в homebrew/core доступны в виде формул с версиями и используют специальный формат именования, например gcc@9. Если нужной вам версии нет, см. раздел Закрепление установленных формул за определёнными версиями.

Быстрое удаление чего-либо из префикса Homebrew

brew unlink <formula>

Это может быть полезно, если пакет не удаётся собрать с версией чего-либо, которая связана с префиксом Homebrew.

И, конечно, после этого можно просто снова brew link <formula>!

Предварительная загрузка файла для формулы

Иногда файл можно скачать быстрее с помощью способов, отличных от доступных в Homebrew. Например, Erlang предоставляет торрент, который позволяет скачивать в 4–5 раз быстрее, чем обычным способом по HTTP.

Загрузки сохраняются в подкаталоге downloads каталога кэша Homebrew (указанного в brew --cache, например ~/Library/Caches/Homebrew) и переименовываются в <url-hash>--<formula>-<version>. Команда brew --cache --build-from-source <formula> выводит ожидаемый путь к загруженному файлу в кэше, поэтому после скачивания файла можно выполнить mv the_tarball "$(brew --cache --build-from-source <formula>)", чтобы переместить его в кэш.

Также можно предварительно поместить загрузку в кэш с помощью команды brew fetch <formula>, которая также выводит её хеш SHA-256. Это может быть полезно при обновлении формул до новых версий.

Установка программ без Xcode CLT

brew sh          # or: eval "$(brew --env)"
gem install ronn # or c-programs

Эта команда импортирует окружение brew в текущую оболочку; gem подхватит переменные окружения и сможет выполнить сборку. В качестве бонуса устанавливаются автоматически определённые флаги оптимизации brew.

Установка только зависимостей формулы (без самой формулы)

brew install --only-dependencies <formula>

Запуск скрипта с формулами Homebrew в PATH

Используйте brew exec, чтобы установить формулы, необходимые скрипту, и запустить его, добавив каталоги с исполняемыми файлами этих формул в PATH:

brew exec --formulae=jq,yq -- ./script.sh

Передайте список формул, разделённых запятыми, с помощью --formulae, а затем укажите команду и её аргументы после --. Homebrew устанавливает отсутствующие формулы, добавляет в начало bin и sbin, а также пути соответствующих зависимостей, после чего заменяет себя указанной командой. В качестве команды можно указать путь; это удобно для переносимых скриптов, демонстраций и кода первоначальной настройки CI, которым нужны инструменты Homebrew без записи Brewfile.

В системах с env -S скрипт может указать это в строке shebang:

#!/usr/bin/env -S brew exec --formulae=jq,yq --

Использование интерактивной оболочки Homebrew

$ brew irb
==> Interactive Homebrew Shell
Example commands available with: `brew irb --examples`
brew(main):001> Formulary.factory("ace").methods - Object.methods
=>
[:test,
 :install,
 :valid_platform?,
...
 :debug?,
 :verbose?,
 :quiet?]
 [:install, :test, :test_defined?, :sbin, :pkgshare, :elisp,
brew(main):002>

Скрытие эмодзи пивной кружки по завершении сборки

export HOMEBREW_NO_EMOJI=1

Это задаёт переменную окружения HOMEBREW_NO_EMOJI, заставляя Homebrew скрывать все эмодзи.

Эмодзи пива также можно заменить другим символом или символами:

export HOMEBREW_INSTALL_BADGE="☕️ 🐸"

Перенос установки Homebrew в новое расположение

Выполнение brew bundle dump сохранит сведения об установке в Brewfile, а brew bundle install установит её из Brewfile. Подробнее см. brew bundle --help.

Передача вручную установленного приложения под управление Homebrew Cask

Запустите brew install --cask с параметром --adopt:

$ brew install --cask --adopt textmate
==> Downloading https://github.com/textmate/textmate/releases/download/v2.0.23/TextMate_2.0.23.tbz
...
==> Installing Cask textmate
==> Adopting existing App at '/Applications/TextMate.app'
==> Linking Binary 'mate' to '/opt/homebrew/bin/mate'
🍺  textmate was successfully installed!

Создание псевдонимов для команд Homebrew

Используйте brew alias, чтобы создавать пользовательские команды, запускающие другие команды в brew или вашей оболочке, подобно встроенной команде оболочки alias.

# Add aliases
$ brew alias ug='upgrade'
$ brew alias i='install'

# Print all aliases
$ brew alias

# Print one alias
$ brew alias i

# Use your aliases like any other command
$ brew i git

# Remove an alias
$ brew unalias i

# Aliases can include other aliases
$ brew alias show='info'
$ brew alias print='show'
$ brew print git # will run `brew info git`

Обратите внимание: имена стандартных команд Homebrew нельзя использовать в качестве псевдонимов.

Перед всеми командами-псевдонимами добавляется brew, если только они не начинаются с ! или %:

$ brew alias ug='upgrade'
# `brew ug` → `brew upgrade`

$ brew alias status='!git status'
# `brew status` → `git status`

Возможно, потребуется использовать одинарные кавычки, чтобы оболочка не интерпретировала !, однако % работает с кавычками обоих типов.

# Use shell expansion to preserve a local variable
$ mygit=/path/to/my/git
$ brew alias git="%$mygit"
# `brew git status` → `/path/to/my/git status`

Псевдонимы можно открыть в $EDITOR с помощью флага --edit.

# Edit alias 'brew foo', creating if necessary
$ brew alias --edit foo
# Create and edit alias 'brew foo'
$ brew alias --edit foo=bar

# This works too
$ brew alias foo --edit
$ brew alias foo=bar --edit

# Open all aliases in $EDITOR
$ brew alias --edit

Плагины для редакторов

Visual Studio Code

  • Brewfile добавляет подсветку синтаксиса Ruby для файлов Brewfile в brew bundle.

  • Brew Services — расширение для запуска и остановки служб Homebrew.

Sublime Text

  • Homebrew-formula-syntax можно установить с помощью Package Control в Sublime Text 2/3; оно добавляет подсветку встроенных патчей.

Vim

  • brew.vim добавляет подсветку встроенных патчей в Vim.

Emacs

  • homebrew-mode обеспечивает подсветку синтаксиса встроенных патчей, а также предоставляет ряд вспомогательных функций для редактирования файлов формул.

  • pcmpl-homebrew обеспечивает автодополнение для emacs shell-mode и eshell-mode.

macOS Terminal.app: включение пункта контекстного меню «Открыть страницу man»

В Терминале macOS можно щёлкнуть правой кнопкой мыши по имени команды (например, ls или tar) и открыть её страницу man в новом окне, выбрав пункт «Открыть страницу man».

Терминалу нужна дополнительная подсказка, где искать установленные Homebrew страницы man, поскольку он не загружает обычные файлы dotfiles, такие как ~/.bash_profile или ~/.zshrc.

sudo mkdir -p /usr/local/etc/man.d
echo "MANPATH $(brew --prefix)/share/man" | sudo tee -a /usr/local/etc/man.d/homebrew.man.conf

Если вы используете Homebrew на Mac с процессором Intel, после этого также следует исправить разрешения:

sudo chown -R "${USER}" /usr/local/etc

Использование кэширующего прокси или зеркала для Homebrew и данных

Можно настроить Homebrew на получение бутылок и JSON API через кэширующий прокси или зеркало.

Например, в JFrog Artifactory, доступном по адресу https://artifacts.example.com:

  • Для бутылок создайте новый репозиторий типа «remote», указав homebrew в качестве «ключа репозитория» и https://ghcr.io (GitHub Packages) в качестве URL. Установите разумный срок действия кэша с учётом доступного объёма хранилища.
  • Для JSON API создайте новый репозиторий типа «remote», указав homebrew-json-api в качестве «ключа репозитория» и https://formulae.brew.sh/api в качестве URL. Установите срок действия кэша 15 минут.

Затем задайте эти переменные окружения, чтобы Homebrew получал данные через кэширующий прокси.

export HOMEBREW_API_DOMAIN=https://artifacts.example.com/artifactory/homebrew-formulae-api
export HOMEBREW_ARTIFACT_DOMAIN=https://artifacts.example.com/artifactory/homebrew
export HOMEBREW_ARTIFACT_DOMAIN_NO_FALLBACK=1
export HOMEBREW_DOCKER_REGISTRY_BASIC_AUTH_TOKEN="$(printf 'anonymous:' | base64)"

Также можно использовать внутреннее зеркало Homebrew/brew, задав переменную окружения перед запуском установщика Homebrew:

export HOMEBREW_BREW_GIT_REMOTE=https://git.example.com/Homebrew-mirrors/brew-mirror

Другие репозитории артефактов, например Sonatype Nexus Repository Manager, не поддерживают явную анонимную аутентификацию и по-прежнему возвращают ошибку 401 Unauthorized, даже если разрешён публичный доступ на чтение. Чтобы избежать этого, задайте следующие переменные окружения, чтобы Homebrew не передавал заголовок Authorization при обращении к репозиторию артефактов:

export HOMEBREW_DOCKER_REGISTRY_BASIC_AUTH_TOKEN=none

Загрузка Homebrew из одних и тех же dotfiles в разных операционных системах

Некоторые пользователи могут захотеть использовать одни и те же файлы инициализации оболочки в macOS и Linux. Используйте этот код, чтобы определить предполагаемый каталог установки Homebrew и загрузить Homebrew, если он найден. Возможно, потребуется адаптировать его для вашей оболочки или особенностей окружения.

command -v brew || export PATH="/opt/homebrew/bin:/home/linuxbrew/.linuxbrew/bin:/usr/local/bin"
command -v brew && eval "$(brew shellenv)"

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

Spec-Zone.ru

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