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

Разделяйте кеш, старые каталоги 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 дней. Предпросмотр не создаёт резервную копию: удалённое не гарантированно попадает в Корзину и может уже не быть доступно в той же версии.
- Выполните brew --cache и измерьте активный кеш загрузок командой du -sh "$(brew --cache)".
- Выполните brew cleanup -n и просмотрите каждую загрузку, старую версию формулы и зависимость, предложенную для автоматического удаления.
- С помощью brew list --versions найдите нужные текущие и старые версии, затем проверьте сеть, прокси и доступность исходных пакетов.
- Запустите brew cleanup только после проверки всех кандидатов; чтобы исключить autoremove, задайте HOMEBREW_NO_AUTOREMOVE=1 и для предпросмотра, и для реальной команды. Используйте --prune=all лишь после такого же предпросмотра.
- Повторно измерьте кеш, выполните 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 --cache | Homebrew по умолчанию хранит бинарные пакеты 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 дней. Предпросмотр не создаёт резервную копию: удалённое не гарантированно попадает в Корзину и может уже не быть доступно в той же версии. |
| Выберите самую узкую подходящую команду cleanup | brew 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.
Источники