brew cleanup -s explicado: limpe o cache do Homebrew no Mac
Equipe AskClean · Atualizado 2026-11-02
Execute brew cleanup -n antes de mudar qualquer coisa. Um brew cleanup normal remove arquivos de bloqueio obsoletos, downloads desatualizados e versões antigas de fórmulas instaladas; nas versões atuais, a menos que HOMEBREW_NO_AUTOREMOVE esteja definida, ele também pode desinstalar automaticamente dependências que ficaram sem uso. A opção -s (--scrub) vai além: também apaga os downloads em cache das versões mais recentes, como os de pacotes que você baixou e nunca instalou ou que já removeu. Em qualquer caso, os downloads de tudo o que continua instalado são mantidos. Use brew --cache para confirmar onde fica o cache ativo.

Separe downloads, kegs antigos e ferramentas atuais
O Homebrew normalmente guarda bottles, arquivos de código-fonte e downloads de casks em ~/Library/Caches/Homebrew; a variável HOMEBREW_CACHE pode mudar esse caminho. As fórmulas instaladas ficam como kegs versionados no Cellar, os casks no Caskroom e os links ativos sob o prefixo do Homebrew. Descubra os locais reais com brew --cache, brew --cellar, brew --caskroom e brew --prefix. Um download em cache normalmente pode ser obtido de novo; um keg antigo é uma versão instalada, e removê-lo tem custo de rollback. O Cellar, o Caskroom, o prefixo, o Brewfile, os dotfiles, os serviços, os bancos de dados e os projetos não são cache e não devem ser apagados em massa.
Veja a prévia e revise cada candidato
Meça o cache ativo com du -sh "$(brew --cache)" e execute brew cleanup -n. A simulação mostra os downloads obsoletos, as versões antigas de fórmulas instaladas e, nas versões atuais, as dependências que seriam removidas automaticamente. Confira as ferramentas importantes com brew list --versions e verifique se algum script ou rollback ainda depende de um keg antigo ou de uma candidata ao autoremove. A simulação é uma prévia, não um backup: o que o Homebrew remove não vai para o Lixo e talvez não continue disponível depois na mesma versão.
- Execute brew --cache e meça o cache de downloads retornado com du -sh "$(brew --cache)".
- Execute brew cleanup -n e revise cada download, versão antiga e dependência marcada como candidata ao autoremove.
- Compare as versões de que você precisa com brew list --versions e confirme rede, proxy, disponibilidade para downloads futuros e uso direto das dependências candidatas.
- Execute brew cleanup só depois de aceitar todos os candidatos; para impedir o autoremove, prefixe a simulação e a execução com HOMEBREW_NO_AUTOREMOVE=1. Use brew cleanup -s ou brew cleanup --prune=all só depois de conferir brew cleanup -n -s ou brew cleanup -n --prune=all, com a mesma configuração.
- Meça de novo o cache, execute brew cleanup -n e brew list --versions e teste pelo menos uma ferramenta importante instalada com o Homebrew.
brew cleanup -n é apenas uma simulação. Use a mesma configuração de HOMEBREW_NO_AUTOREMOVE na prévia e na execução. Remover um keg antigo ou uma dependência usada diretamente por scripts pode quebrar o seu fluxo, e talvez não seja possível recuperar exatamente aquela versão.
Escolha o cleanup de menor alcance
Depois de revisar a simulação, use brew cleanup para a manutenção normal, baseada na idade dos arquivos (por padrão, downloads com mais de 120 dias). A opção -s quer dizer --scrub — não “safe” nem “silent” — e amplia a limpeza aos downloads recentes, inclusive os das versões mais novas de pacotes que não estão instalados (baixados e nunca instalados, ou já removidos), mas mantém os downloads de tudo o que continua instalado; não é um comando que esvazia o cache inteiro. Confira antes com brew cleanup -n -s. Para remover os arquivos de cache cobertos pela limpeza independentemente da idade, confira brew cleanup -n --prune=all antes de executar brew cleanup --prune=all. Se quiser impedir que a limpeza desinstale dependências automaticamente, use HOMEBREW_NO_AUTOREMOVE=1 tanto na simulação quanto no comando real. Instalações futuras terão de baixar de novo bottles, arquivos e instaladores, e remover kegs antigos pode impedir um rollback exato.
Trate o autoremove como uma decisão à parte
Executado sozinho, brew autoremove não limpa cache: ele desinstala fórmulas que o Homebrew considera dependências desnecessárias. Mas um brew cleanup global também pode acionar essa etapa automaticamente. Para decidir isso separadamente, use HOMEBREW_NO_AUTOREMOVE=1 no cleanup e depois avalie brew autoremove --dry-run, porque um script seu pode usar uma ferramenta que não aparece no grafo de dependências. Depois da limpeza, meça de novo, execute brew cleanup -n e brew list --versions e teste os comandos importantes.
Limites de exclusão e custo de recuperação
Entenda o brew cleanup -s (--scrub), simule a limpeza do cache do Homebrew, remova downloads e versões antigas e proteja ferramentas e configurações atuais.
| Item ou ação | Onde verificar | Consequência |
|---|---|---|
| Separe downloads, kegs antigos e ferramentas atuais | brew --cache | O Homebrew normalmente guarda bottles, arquivos de código-fonte e downloads de casks em ~/Library/Caches/Homebrew; a variável HOMEBREW_CACHE pode mudar esse caminho. |
| Veja a prévia e revise cada candidato | brew cleanup -n | Meça o cache ativo com du -sh "$(brew --cache)" e execute brew cleanup -n. |
| Escolha o cleanup de menor alcance | brew cleanup / brew cleanup -s / brew cleanup --prune=all | Depois de revisar a simulação, use brew cleanup para a manutenção normal, baseada na idade dos arquivos (por padrão, downloads com mais de 120 dias). |
| Trate o autoremove como uma decisão à parte | brew cleanup -n / brew autoremove --dry-run / HOMEBREW_NO_AUTOREMOVE | Executado sozinho, brew autoremove não limpa cache: ele desinstala fórmulas que o Homebrew considera dependências desnecessárias. |
Perguntas frequentes
É seguro executar brew cleanup no Mac?
É um comando oficial do Homebrew, mas, além de downloads obsoletos e versões antigas de fórmulas, uma limpeza global pode acionar o autoremove. Sempre execute brew cleanup -n primeiro, preserve os kegs e as dependências usados por scripts e defina HOMEBREW_NO_AUTOREMOVE=1 se quiser avaliar o autoremove separadamente.
O que brew cleanup -s e brew cleanup --prune=all apagam?
O --prune=all remove os arquivos de cache independentemente da idade; o -s (--scrub) também apaga os downloads em cache das versões mais recentes de pacotes que não estão instalados — como os que você baixou e nunca instalou ou que já removeu —, mas mantém os de fórmulas e casks que continuam instalados. Nos dois casos, o cleanup também remove arquivos de bloqueio obsoletos e versões antigas de fórmulas e pode acionar o autoremove. Confira a lista exata com brew cleanup -n -s ou brew cleanup -n --prune=all e use a mesma configuração de HOMEBREW_NO_AUTOREMOVE na execução.
Devo executar brew autoremove depois?
Não como uma etapa extra automática. O brew autoremove desinstala fórmulas consideradas dependências sem uso e não limpa o cache; um brew cleanup global já pode acioná-lo. Para decidir à parte, use HOMEBREW_NO_AUTOREMOVE=1 durante o cleanup e depois comece com brew autoremove --dry-run.
Fontes