AskCleanAskClean

Как очистить кеш Homebrew и старые версии на Mac

Команда AskClean · Обновлено 2026-08-05

Определите кеш загрузок Homebrew командой brew --cache, затем до любых изменений выполните brew cleanup -n. Обычный brew cleanup удаляет устаревшие файлы блокировок, старые загрузки и предыдущие версии формул; если не задана HOMEBREW_NO_AUTOREMOVE, он также может автоматически удалить ставшие ненужными формулы-зависимости. brew cleanup --prune=all убирает кешированные файлы независимо от возраста. До запуска оцените стоимость повторной загрузки и риск потерять возможность точного отката.

Бутылки и коробки Homebrew разложены по освещённым полкам, а часть бутылок собрана в контейнере для утилизации
Перед очисткой отделите нужные инструменты от старых загрузок и версий, показанных командой brew cleanup -n.

Разделяйте кеш, старые каталоги keg и текущие инструменты

Homebrew по умолчанию хранит бинарные пакеты bottle, архивы исходников и загрузки cask-пакетов в ~/Library/Caches/Homebrew; HOMEBREW_CACHE может изменить этот путь. Установленные формулы лежат в Cellar в каталогах отдельных версий (keg), cask-пакеты — в Caskroom, а активные ссылки — под префиксом. Находите реальные пути командами brew --cache, brew --cellar, brew --caskroom и brew --prefix. Cellar, Caskroom, префикс, Brewfile, файлы конфигурации, службы, базы данных и проекты нельзя удалять как единый кеш.

Сначала просмотрите все кандидаты без удаления

Измерьте активный кеш командой du -sh "$(brew --cache)", затем выполните brew cleanup -n. Предпросмотр показывает устаревшие загрузки, старые установленные формулы и зависимости, предложенные для автоматического удаления. Проверьте версии нужных инструментов командой brew list --versions и убедитесь, что скрипт или процедура отката не зависят от старого каталога keg. Обычная очистка применяет текущую возрастную политику Homebrew — по умолчанию 120 дней. Предпросмотр не создаёт резервную копию: удалённое не гарантированно попадает в Корзину и может уже не быть доступно в той же версии.

  1. Выполните brew --cache и измерьте активный кеш загрузок командой du -sh "$(brew --cache)".
  2. Выполните brew cleanup -n и просмотрите каждую загрузку, старую версию формулы и зависимость, предложенную для автоматического удаления.
  3. С помощью brew list --versions найдите нужные текущие и старые версии, затем проверьте сеть, прокси и доступность исходных пакетов.
  4. Запустите brew cleanup только после проверки всех кандидатов; чтобы исключить autoremove, задайте HOMEBREW_NO_AUTOREMOVE=1 и для предпросмотра, и для реальной команды. Используйте --prune=all лишь после такого же предпросмотра.
  5. Повторно измерьте кеш, выполните brew cleanup -n и brew list --versions, затем протестируйте хотя бы один важный инструмент Homebrew.

brew cleanup -n — предпросмотр, а не резервная копия. Удалённый старый каталог keg может сломать путь в скрипте или лишить вас незадокументированного способа отката; точное восстановление не гарантируется.

Выберите самую узкую подходящую команду cleanup

После проверки используйте brew cleanup для обычного обслуживания. Чтобы исключить автоматическое удаление ставших ненужными зависимостей, задайте HOMEBREW_NO_AUTOREMOVE=1 и при предпросмотре, и при реальном запуске, например HOMEBREW_NO_AUTOREMOVE=1 brew cleanup -n, затем HOMEBREW_NO_AUTOREMOVE=1 brew cleanup. Если нужно удалить все кешированные файлы независимо от возраста, сначала проверьте brew cleanup -n --prune=all и лишь затем выполняйте brew cleanup --prune=all, при необходимости с той же переменной. Будущим установкам и сборкам придётся заново загружать пакеты bottle, архивы и установщики. cleanup может убрать старые каталоги keg и сделать точный откат невозможным.

Рассматривайте autoremove и пользовательские данные отдельно

brew autoremove — не очистка кеша: команда удаляет формулы, которые Homebrew считает больше не нужными как зависимости. Однако brew cleanup тоже может автоматически запустить такое удаление, если не задана HOMEBREW_NO_AUTOREMOVE. Чтобы принять это решение отдельно, используйте HOMEBREW_NO_AUTOREMOVE=1 при предпросмотре и очистке, а затем отдельно выполните brew autoremove --dry-run: скрипты могут напрямую использовать инструмент, не отражённый в графе зависимостей. После cleanup снова измерьте кеш, выполните brew cleanup -n и brew list --versions и протестируйте важные команды.

Границы удаления и стоимость восстановления

Просмотрите загрузки и старые версии с помощью brew cleanup -n, не затрагивая текущие инструменты, настройки и пользовательские данные.

Объект или действиеГде и чем проверитьПоследствие
Разделяйте кеш, старые каталоги keg и текущие инструментыbrew --cacheHomebrew по умолчанию хранит бинарные пакеты bottle, архивы исходников и загрузки cask-пакетов в ~/Library/Caches/Homebrew; HOMEBREW_CACHE может изменить этот путь. Установленные формулы лежат в Cellar в каталогах отдельных версий (keg), cask-пакеты — в Caskroom, а активные ссылки — под префиксом. Находите реальные пути командами brew --cache, brew --cellar, brew --caskroom и brew --prefix. Cellar, Caskroom, префикс, Brewfile, файлы конфигурации, службы, базы данных и проекты нельзя удалять как единый кеш.
Сначала просмотрите все кандидаты без удаленияbrew cleanup -nИзмерьте активный кеш командой du -sh "$(brew --cache)", затем выполните brew cleanup -n. Предпросмотр показывает устаревшие загрузки, старые установленные формулы и зависимости, предложенные для автоматического удаления. Проверьте версии нужных инструментов командой brew list --versions и убедитесь, что скрипт или процедура отката не зависят от старого каталога keg. Обычная очистка применяет текущую возрастную политику Homebrew — по умолчанию 120 дней. Предпросмотр не создаёт резервную копию: удалённое не гарантированно попадает в Корзину и может уже не быть доступно в той же версии.
Выберите самую узкую подходящую команду cleanupbrew cleanup / brew cleanup --prune=allПосле проверки используйте brew cleanup для обычного обслуживания. Чтобы исключить автоматическое удаление ставших ненужными зависимостей, задайте HOMEBREW_NO_AUTOREMOVE=1 и при предпросмотре, и при реальном запуске, например HOMEBREW_NO_AUTOREMOVE=1 brew cleanup -n, затем HOMEBREW_NO_AUTOREMOVE=1 brew cleanup. Если нужно удалить все кешированные файлы независимо от возраста, сначала проверьте brew cleanup -n --prune=all и лишь затем выполняйте brew cleanup --prune=all, при необходимости с той же переменной. Будущим установкам и сборкам придётся заново загружать пакеты bottle, архивы и установщики. cleanup может убрать старые каталоги keg и сделать точный откат невозможным.
Рассматривайте autoremove и пользовательские данные отдельноbrew autoremove --dry-run (это не очистка кеша)brew autoremove — не очистка кеша: команда удаляет формулы, которые Homebrew считает больше не нужными как зависимости. Однако brew cleanup тоже может автоматически запустить такое удаление, если не задана HOMEBREW_NO_AUTOREMOVE. Чтобы принять это решение отдельно, используйте HOMEBREW_NO_AUTOREMOVE=1 при предпросмотре и очистке, а затем отдельно выполните brew autoremove --dry-run: скрипты могут напрямую использовать инструмент, не отражённый в графе зависимостей. После cleanup снова измерьте кеш, выполните brew cleanup -n и brew list --versions и протестируйте важные команды.

Частые вопросы

Безопасно ли выполнять brew cleanup на Mac?

Это штатная команда Homebrew, но она удаляет старые версии формул и может автоматически вызвать autoremove. Всегда начинайте с brew cleanup -n, сохраняйте нужные для скриптов или отката каталоги keg и задавайте HOMEBREW_NO_AUTOREMOVE=1, если хотите рассматривать неиспользуемые зависимости отдельно.

Что удаляет brew cleanup --prune=all?

Команда расширяет политику очистки кеша, снимая ограничение по возрасту, и сохраняет остальные действия cleanup со старыми блокировками и версиями. Точный список смотрите через brew cleanup -n --prune=all.

Нужно ли после этого запускать brew autoremove?

Не как обязательный дополнительный шаг. brew autoremove удаляет формулы-зависимости, а не кеш; кроме того, brew cleanup может уже запустить его автоматически. Чтобы принять решение отдельно, задайте HOMEBREW_NO_AUTOREMOVE=1 при cleanup, а затем выполните brew autoremove --dry-run.

Источники

Другие руководства по хранилищу для разработчиков