Как очистить кэш Homebrew и старые версии на Mac
Команда AskClean · Обновлено 2026-11-02
Определите кэш загрузок 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. Предпросмотр показывает устаревшие загрузки, старые установленные формулы и зависимости, предложенные для автоматического удаления (в выводе они перечислены под строкой «Would autoremove»). Проверьте версии нужных инструментов командой brew list --versions и убедитесь, что скрипт или процедура отката не зависят от старого каталога keg. Обычная очистка применяет текущую возрастную политику Homebrew — по умолчанию 120 дней. Предпросмотр — не резервная копия: не рассчитывайте, что удалённый каталог keg или загрузка окажется в Корзине или останется доступной в той же версии.
- Выполните 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. Ключ -s (--scrub) идёт дальше: он удаляет и кэшированные загрузки последних версий для неустановленных пакетов — например, тех, что вы скачали, но так и не установили, или уже удалили; загрузки всего, что по-прежнему установлено, сохраняются. Этот ключ не означает ни «удалить весь кэш», ни «безопасный режим», поэтому сначала проверьте brew cleanup -n -s. Если нужно удалить все кэшированные файлы независимо от возраста, сначала проверьте 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 и протестируйте важные команды.
Границы удаления и стоимость восстановления
Как очистить кэш Homebrew на Mac: что покажет brew cleanup -n, чем -s отличается от --prune=all и как не задеть текущие инструменты и настройки.
| Объект или действие | Где и чем проверить | Последствие |
|---|---|---|
| Разделяйте кэш, старые каталоги keg и текущие инструменты | brew --cache | Homebrew по умолчанию хранит бинарные пакеты bottle, архивы исходников и загрузки cask-пакетов в ~/Library/Caches/Homebrew; HOMEBREW_CACHE может изменить этот путь. |
| Сначала просмотрите всех кандидатов, ничего не удаляя | brew cleanup -n | Измерьте активный кэш командой du -sh "$(brew --cache)", затем выполните brew cleanup -n. |
| Выберите самую узкую подходящую команду cleanup | brew cleanup / brew cleanup -s / brew cleanup --prune=all | После проверки используйте brew cleanup для обычного обслуживания. |
| Рассматривайте autoremove и пользовательские данные отдельно | brew autoremove --dry-run (это не очистка кэша) | brew autoremove — не очистка кэша: команда удаляет формулы, которые Homebrew считает больше не нужными как зависимости. |
Частые вопросы
Безопасно ли выполнять 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?
Обычно в этом нет нужды: если не задана HOMEBREW_NO_AUTOREMOVE, brew cleanup без имён пакетов уже выполняет то же удаление. brew autoremove удаляет формулы-зависимости, а не кэш, и может убрать инструмент, который ваши скрипты вызывают напрямую. Чтобы принять решение отдельно, задайте HOMEBREW_NO_AUTOREMOVE=1 при cleanup, а затем выполните brew autoremove --dry-run.
Источники