Homebrew — утилита командной строки в macOS и Linux, устанавливает нужные вам пакеты, не предоставляемые Apple.
До Homebrew было несколько различных попыток создать эффективные пакетные менеджеры для OS X. Наиболее популярные: Fink и Macports. У каждой из них есть свои проблемы. В обоих создание своих пакетов или портов является черезчур сложным.
Homebrew основан на двух вещах: Git и Ruby (brew --prefix ruby
)
Дефолтное расположение brew
:
/opt/homebrew
для Apple Silicon на arm архитектур;/usr/local
for macOS для Intel чипов на x86 архитектуре;
Термин | Описание | Пример |
---|---|---|
Formula (Формула) | Определение пакета (скрипт Ruby), включающее инструкции по установке, зависимости и конфигурации пакета | /usr/local/Library/Formula/foo.rb |
Keg (Бочонок) | Директория, в которую устанавливается конкретная версия пакета (Formula) | /usr/local/Cellar/foo/0.1 или /opt/homebrew/Cellar/foo/0.1 |
opt prefix (префикс) | Символическая ссылка (симлинк) на активную версию пакета для упрощения доступа | /usr/local/opt/foo |
Cellar (Погреб) | Основной каталог, где хранятся установленные версии всех пакетов | /usr/local/Cellar |
Tap (Кран) | Дополнительный репозиторий, в котором хранятся уже собственные формулы | /usr/local/Library/Taps/homebrew/homebrew-versions |
Bottle (Бутылка) | Предварительно собранная и упакованная версия пакета (Keg), готовая для установки. Благодаря Bottle(бутылкам) не нужно компилировать программы и Homebrew достаточно скачать готовые пакеты под целевую систему. | qt-4.8.4.mavericks.bottle.tar.gz |
Может возникнуть потребность установки brew
в отличную от дефолтной директории:
1) mkdir ~/homebrew
2) скачать оттуда https://github.com/Homebrew/brew/tarball/master
3) (echo; echo 'eval "$(~/homebrew/bin/brew shellenv)"') >> ~/.zprofile
4) eval "$(~/homebrew/bin/brew shellenv)"
5) ~/homebrew/bin/brew update --force --quiet
6) chmod -R go-w "$(brew --prefix)"
Профит, дальше можно устанавливать любые пакеты: brew install cocoapods
brew doctor
brew update
- происходит git pull репозитория brew
brew upgrade
or brew upgrade <package>
brew outdated
Автоматически очищает устаревший кэш Homebrew и версии пакетов, включая файлы в ~/Library/Caches/Homebrew, которые больше не нужны:
brew cleanup
Без флага --prune=all
с более щадящими настройками:
Функция | brew cleanup | brew cleanup --prune=all |
---|---|---|
Удаление старых версий пакетов | Да, но только сильно устаревших | Удаляет все старые версии пакетов |
Удаление временных файлов | Да, но только устаревших | Удаляет все временные файлы |
Ограничение по времени | Есть (обычно файлы старше 30 дней) | Нет, удаляются все устаревшие файлы |
Чтобы увидеть, что будет удалено, фактически ничего не удаляя:
brew cleanup --prune=all --dry-run
Удаляет ненужные зависимости, которые: были установлены автоматически как зависимости для других пакетов и больше не требуются ни одним установленным пакетом.
brew autoremove
Функция | brew autoremove | brew cleanup |
---|---|---|
Удаление ненужных зависимостей | ✅ Да | ❌ Нет |
Удаление старых версий пакетов | ❌ Нет | ✅ Да |
Очистка временных файлов | ❌ Нет | ✅ Да |
Очистка кэша | ❌ Нет | ✅ Да |
brew list --version
Или диаграмма:
brew deps --graph --installed
/brew deps --tree --installed
Если brew search cocoapods
не выдает список версий через "@version", то можно извлечь предыдущую версию следующим способом:
Общий пример:
TAP=... # <org>/<repo>, for example "my-org/homebrew-old"
MODULE=... # name of module you want to install, e.g. "hugo"
VERS=... # version of $MODULE you want to install, e.g., "0.80.0"
brew tap-new $TAP
brew extract --version $VERS $MODULE $TAP
brew install $TAP/$MODULE@$VERS
Мой пример:
brew tap-new eldaroid/[email protected]
brew extract --version=1.15.1 cocoapods eldaroid/[email protected]
brew install eldaroid/[email protected]/[email protected]
4.2.1 Building Theme Folder | Back To iOSWiki Contents | 4.2.1.1 Simulator Theme