Logo do PruneoPruneo

brew cleanup no Mac: libere espaço do cache e de versões antigas

Resposta curta

Rode brew cleanup -n para ver o que o Homebrew removeria e depois brew cleanup para apagar as versões antigas das fórmulas e os downloads com mais de 120 dias. Use brew cleanup --prune=all para esvaziar todo o cache de downloads e brew autoremove para desinstalar dependências de que nada mais precisa.

Se você usa o Homebrew todo dia, ele vai juntando aos poucos arquivos que você nunca vê: bottles baixados e instaladores de casks, versões antigas de fórmulas que você atualizou e dependências que ficaram para trás depois que você desinstalou a ferramenta que precisava delas. O Homebrew tem os próprios comandos para limpar tudo isso, e eles são o jeito mais seguro de fazer isso. Este guia explica cada um, o que ele remove e o que você perde.

Todos os comandos abaixo estão documentados no manpage oficial do Homebrew e no FAQ do Homebrew.

O que ocupa espaço no Homebrew

São três lugares principais:

  1. O cache de downloads. Todo bottle (pacote pré-compilado) e todo instalador de cask (.dmg, .pkg, .zip) que o Homebrew baixa fica guardado aqui. No macOS, o caminho padrão é ~/Library/Caches/Homebrew, como diz a entrada HOMEBREW_CACHE do manpage.
  2. Versões antigas no Cellar. Quando você atualiza uma fórmula, a versão nova é instalada ao lado da antiga. O Homebrew normalmente remove a antiga, mas se a limpeza automática estiver desativada, as versões se acumulam.
  3. Dependências órfãs. Se você instala o ffmpeg e depois o desinstala, as bibliotecas que ele trouxe podem continuar instaladas mesmo sem nada que as use.

Passo 1: meça antes de apagar

Antes de remover qualquer coisa, veja o tamanho de cada parte. Estes comandos só leem:

brew --cache
du -sh "$(brew --cache)"
du -sh "$(brew --cellar)"

brew --cache mostra a pasta do cache de downloads (o manpage descreve isso como exibir o cache de downloads do Homebrew). du -sh mostra o tamanho dela. O segundo du mostra o tamanho do Cellar, onde ficam as fórmulas instaladas. A maior parte do Cellar é software que você usa, então não apague nada lá na mão.

Para ver quais fórmulas têm mais de uma versão instalada:

brew list --versions

Uma linha com dois ou mais números de versão quer dizer que versões antigas ainda estão no disco.

Passo 2: simule com brew cleanup -n

O brew cleanup tem um modo de simulação. O manpage explica que -n (ou --dry-run) mostra o que seria removido, sem remover nada de fato.

brew cleanup -n

Você recebe uma lista de arquivos e pastas e, no final, uma estimativa do espaço que seria liberado. Leia a lista: se você vir uma versão de uma fórmula de que ainda precisa (por exemplo, uma versão antiga de python@ ou node@ da qual um projeto depende), pare e guarde essa versão (veja a seção sobre limpeza automática mais abaixo).

Passo 3: rode o brew cleanup

brew cleanup

Segundo o manpage, o brew cleanup remove arquivos de lock velhos e downloads desatualizados de todas as fórmulas e casks, e remove versões antigas das fórmulas instaladas. Por padrão, ele remove downloads com mais de 120 dias. Você pode mudar esse limite com HOMEBREW_CLEANUP_MAX_AGE_DAYS.

Você também pode limpar uma única fórmula ou cask:

brew cleanup wget

Passo 4: esvazie todo o cache com –prune=all

O brew cleanup normal mantém os downloads recentes. Se você quer esvaziar o cache por completo, use --prune. O manpage diz que ele remove todos os arquivos de cache mais antigos que o número de dias indicado, e que para remover tudo você deve usar --prune=all.

Simule primeiro:

brew cleanup -n --prune=all
brew cleanup --prune=all

Também existe o -s (--scrub), que limpa o cache inteiro, inclusive os downloads das versões mais recentes. Para a maioria das pessoas, --prune=all basta.

Passo 5: remova dependências sem uso com brew autoremove

O brew autoremove desinstala as fórmulas que foram instaladas só como dependência de outra fórmula e que não são mais necessárias (manpage). Ele também tem simulação:

brew autoremove -n

Confira a lista. Se você vir uma fórmula que usa diretamente (por exemplo, você começou a usar o openssl ou o python por conta própria depois que outra ferramenta os instalou), adicione-a a HOMEBREW_NO_CLEANUP_FORMULAE (explicado abaixo): o manpage diz que o Homebrew se recusa a limpar ou remover automaticamente uma fórmula que aparece nessa lista.

brew autoremove

Como funciona a limpeza automática

O Homebrew já limpa por conta própria, e é por isso que muitos Macs nunca acumulam muita coisa. O manpage explica que, depois de brew install, brew upgrade e brew reinstall, a menos que HOMEBREW_NO_INSTALL_CLEANUP esteja definida, o brew cleanup roda para as fórmulas e casks instalados ou, a cada 30 dias, para todos os pacotes. Os 30 dias vêm de HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS, que você pode mudar.

O FAQ acrescenta que o Homebrew desinstala automaticamente as versões antigas de uma fórmula quando você a atualiza com brew upgrade.

Variáveis úteis, todas documentadas na seção de ambiente do manpage:

Variável O que faz
HOMEBREW_NO_INSTALL_CLEANUP Desativa a limpeza automática depois de install, upgrade e reinstall
HOMEBREW_NO_CLEANUP_FORMULAE Lista separada por vírgulas de fórmulas que o Homebrew nunca vai limpar nem remover automaticamente
HOMEBREW_CLEANUP_MAX_AGE_DAYS Limite de idade dos arquivos em cache (padrão 120)
HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS Dias entre limpezas completas (padrão 30)
HOMEBREW_NO_AUTOREMOVE Impede que brew cleanup e brew uninstall removam automaticamente as dependências sem uso
HOMEBREW_CACHE Move o cache de downloads para outra pasta

Quando manter versões antigas

Se um projeto precisa de uma versão exata, desativar a limpeza para tudo costuma ser exagero. Uma opção melhor é proteger só aquela fórmula. Adicione esta linha ao seu ~/.zprofile (ou ao arquivo que o seu shell lê):

export HOMEBREW_NO_CLEANUP_FORMULAE="postgresql@16,node@20"

Troque os nomes pelas fórmulas que você quer proteger. Se você definir HOMEBREW_NO_INSTALL_CLEANUP=1, lembre que o espaço vai crescer até você rodar brew cleanup por conta própria.

Por que você pode ter muitas versões antigas

Se brew list --versions mostra muitas versões, veja se HOMEBREW_NO_INSTALL_CLEANUP está definida nos arquivos do seu shell:

grep -n HOMEBREW_ ~/.zprofile ~/.zshrc 2>/dev/null

É comum copiar essa variável de um tutorial para deixar as instalações mais rápidas e depois esquecer dela.

Uma rotina segura

Uma vez por mês, ou quando o disco estiver enchendo:

  1. du -sh "$(brew --cache)" para ver o tamanho.
  2. brew cleanup -n, leia a lista.
  3. brew cleanup.
  4. brew autoremove -n, leia a lista e depois brew autoremove se estiver tudo certo.
  5. Só se precisar de mais espaço: brew cleanup --prune=all.

Não apague na mão pastas dentro do Cellar ou do prefixo do Homebrew (/opt/homebrew no Apple Silicon, segundo a página de instalação; rode brew --prefix para ver o seu). O Homebrew mantém links e registros de cada pacote, e remover arquivos diretamente pode deixar links quebrados. Use brew uninstall.

O Homebrew raramente é o que mais ocupa no Mac de quem programa. Se você ainda precisa de espaço, olhe o DerivedData do Xcode, o Docker e as pastas node_modules, que costumam crescer muito mais rápido.

Resumo

Para ter uma visão completa de para onde vai o seu espaço, leia como liberar espaço no Mac, ou baixe o Pruneo para ver isso em poucos segundos.

Perguntas frequentes

É seguro rodar brew cleanup?

Sim, para a maioria das pessoas. Ele remove versões antigas das fórmulas instaladas e downloads antigos, não as versões que você está usando. A única perda é que você não consegue voltar para uma versão antiga sem reinstalá-la.

Onde fica o cache do Homebrew no Mac?

Por padrão em ~/Library/Caches/Homebrew. Rode brew --cache para ver o caminho exato no seu Mac, porque ele pode ser alterado com a variável HOMEBREW_CACHE.

O Homebrew limpa sozinho?

Sim. Depois de brew install, brew upgrade ou brew reinstall, ele limpa os pacotes envolvidos, e a cada 30 dias limpa todos. Você pode desativar isso com HOMEBREW_NO_INSTALL_CLEANUP.

Qual a diferença entre brew cleanup e brew autoremove?

O brew cleanup remove versões antigas e downloads em cache. O brew autoremove desinstala fórmulas que foram instaladas só como dependências e de que nenhuma fórmula instalada precisa mais.

Experimente com o Pruneo

Grátis para macOS 14 ou posterior. Tudo o que ele limpa pode ser recuperado na quarentena.

Pruneo é para Mac

Envie o link para você e baixe no seu Mac. É grátis e sem conta.

Enviar por e-mail
Baixar mesmo assim