brew cleanup no Mac: cache, versões antigas, autoremove
O Homebrew gerencia versões antigas e downloads em cache de forma mais ativa do que fazia. A menos que a limpeza automática esteja desativada, instalações e upgrades limpam as formulae que tocam, e o Homebrew periodicamente limpa todas as formulae. Uma instalação de longa data ainda pode acumular downloads, versões fixadas, artefatos de build e dependências. Inspecione os próprios metadados do Homebrew antes de apagar qualquer coisa sob o prefixo dele.
O que o Homebrew guarda por perto
Três tipos de restos se acumulam:
- Versões antigas. A limpeza normalmente remove versões substituídas, mas versões retidas ou atualizadas recentemente podem permanecer no Cellar por um tempo.
- Arquivos baixados. Cada download de bottle e de cask fica em cache no cache do Homebrew, guardado para evitar outro download.
- Dependências sem uso. As operações atuais de limpeza e desinstalação do Homebrew normalmente removem formulae que não são mais necessárias, a menos que a remoção automática esteja desativada. Instalações mais antigas ou operações interrompidas ainda podem deixar algumas para trás.
Veja o tamanho do cache de download diretamente:
brew --cache
du -sh "$(brew --cache)" 2>/dev/null
Meça os três armazenamentos separadamente
Um total só esconde três decisões diferentes. Registre as formulae instaladas, os metadados de cask e o cache de download antes da limpeza:
du -sh "$(brew --cellar)" "$(brew --caskroom)" "$(brew --cache)" 2>/dev/null
Um cache grande é a recuperação fácil, porque o Homebrew pode baixar esses arquivos de novo. Um Cellar grande é sobretudo software instalado, então cleanup só consegue remover versões substituídas. Um Caskroom grande não significa que os próprios pacotes dos apps vivem ali; apps de cask costumam ficar em /Applications. Rode o mesmo comando depois e atribua a mudança ao armazenamento que de fato encolheu.
Limpando
Primeiro pré-visualize as versões antigas e os downloads em cache que o Homebrew removeria. Este comando não os apaga:
brew cleanup -n
Leia os caminhos propostos antes de continuar. Se a pré-visualização termina sem listar remoções, não há nada para limpar nesse alcance; um erro não é um resultado vazio. Depois de conferir que você não precisa das versões antigas nem dos downloads offline, rode a limpeza comum:
brew cleanup
O manual atual do Homebrew diz que a limpeza comum remove versões antigas instaladas e downloads com mais de 120 dias por padrão. HOMEBREW_CLEANUP_MAX_AGE_DAYS pode mudar essa janela. Use -n para um dry run. O modo mais fundo -s esfrega mais downloads em cache, mantendo os downloads das formulae e casks instalados agora:
O modo mais amplo de cache precisa da própria pré-visualização. Rode o primeiro comando, revise a lista e rode o segundo separadamente só se você aceitar esse alcance:
brew cleanup -s -n
brew cleanup -s
A limpeza e a desinstalação do Homebrew agora removem dependências de formula sem uso por padrão. brew autoremove continua útil quando você quer inspecionar essa decisão de dependência diretamente:
brew autoremove --dry-run
brew autoremove
brew list mostra os pacotes instalados e brew outdated mostra atualizações pendentes. Use brew --cellar, brew --caskroom e brew --cache para descobrir caminhos em vez de fixar /opt/homebrew; instalações Intel e Apple silicon diferem.
Seguro por desenho
A limpeza do Homebrew tem risco menor do que apagar diretórios do Cellar à mão, porque usa metadados de versão e de dependência. Ela ainda pode remover uma versão de reversão ou um bottle em cache que você esperava usar offline. Pré-visualize tanto a limpeza quanto o autoremove, e mantenha de propósito as versões fixadas ou operacionalmente críticas.
Por dentro: o Cellar, o Caskroom, e como a limpeza decide
O Homebrew instala cada formula num diretório versionado no Cellar informado por brew --cellar, e depois liga a versão ativa no prefixo. Um upgrade coloca a versão nova ao lado da antiga antes de reapontar os symlinks. Os casks guardam metadados versionados sob o Caskroom, enquanto os pacotes dos apps costumam viver em /Applications. Os downloads usam o caminho informado por brew --cache e são retidos conforme a política do Homebrew. brew cleanup usa metadados de versão instalada, retenção e dependência, em vez de simplesmente apagar todo diretório que não é o atual. brew autoremove expõe a parte só de dependência como um comando separado. Como os dois agem sobre os próprios registros do Homebrew em vez de adivinhar, são mais seguros e mais explicáveis do que a remoção manual de pastas. Uma pré-visualização ainda é útil em máquinas que dependem de toolchains antigas ou de bottles offline.
Onde outra ferramenta deve parar
O Mole 1.16 lista downloads do Homebrew e versões antigas de formula que o próprio Homebrew propõe por meio de brew cleanup --dry-run. A descoberta de versões antigas aceita os prefixos padrão /opt/homebrew e /usr/local e preserva versões ligadas ou fixadas. Não varre o Cellar inteiro nem substitui as decisões de dependência do Homebrew. Revise as linhas reais antes de confirmar a limpeza. Essas linhas de versão antiga começam desmarcadas para revisão.
Uma ordem segura de operações
Use os comandos de caminho do Homebrew para medir os armazenamentos, pré-visualize brew cleanup -n e rode a limpeza comum antes de considerar -s. Pré-visualize brew autoremove à parte, porque ele responde a uma pergunta de dependência, não a uma pergunta de cache. Não há necessidade de um calendário fixo de limpeza quando a limpeza automática está funcionando e a pressão de disco está baixa.