brew cleanup en Mac: libera espacio de la caché y versiones viejas
Ejecuta brew cleanup -n para ver qué borraría Homebrew y luego brew cleanup para quitar las versiones viejas de tus fórmulas y las descargas de más de 120 días. Con brew cleanup --prune=all vacías toda la caché de descargas y con brew autoremove desinstalas dependencias que ya nadie necesita.
Si usas Homebrew a diario, con el tiempo junta archivos que nunca ves: paquetes precompilados (bottles) e instaladores de casks descargados, versiones viejas de fórmulas que actualizaste y dependencias que quedaron sueltas cuando desinstalaste la herramienta que las pedía. Homebrew trae sus propios comandos para limpiar todo eso, y son la forma más segura de hacerlo. En esta guía verás qué hace cada uno, qué borra y qué pierdes.
Todos los comandos están documentados en el manual oficial de Homebrew y en sus preguntas frecuentes.
Qué ocupa espacio en Homebrew
Hay tres sitios principales:
- La caché de descargas. Aquí se guarda cada bottle y cada instalador de cask (
.dmg,.pkg,.zip) que Homebrew descarga. En macOS la ruta por defecto es~/Library/Caches/Homebrew, según la entrada HOMEBREW_CACHE del manual. - Versiones viejas en el Cellar. Al actualizar una fórmula, la versión nueva se instala junto a la anterior. Homebrew suele borrar la vieja, pero si la limpieza automática está apagada, las versiones se acumulan.
- Dependencias huérfanas. Si instalas
ffmpegy después lo desinstalas, las bibliotecas que trajo pueden seguir instaladas aunque nada las use.
Paso 1: mide antes de borrar
Antes de quitar nada, mira cuánto ocupa cada parte. Estos comandos solo leen:
brew --cache
du -sh "$(brew --cache)"
du -sh "$(brew --cellar)"
brew --cache muestra la carpeta de la caché de descargas y du -sh te dice su tamaño. El segundo du mide el Cellar, donde viven las fórmulas instaladas. Casi todo lo que hay en el Cellar es software que usas, así que no lo borres a mano.
Para ver qué fórmulas tienen más de una versión instalada:
brew list --versions
Si una línea muestra dos o más números de versión, hay versiones antiguas todavía en el disco.
Paso 2: simula con brew cleanup -n
brew cleanup tiene un modo de prueba. El manual explica que -n (o --dry-run) muestra lo que se borraría sin borrar nada.
brew cleanup -n
Verás una lista de archivos y carpetas y, al final, una estimación del espacio que liberaría. Léela: si aparece una versión que todavía necesitas (por ejemplo, un python@ o node@ antiguo del que depende un proyecto), detente y protégela (lo explicamos más abajo, en la limpieza automática).
Paso 3: ejecuta brew cleanup
brew cleanup
Según el manual, brew cleanup elimina los archivos de bloqueo obsoletos y las descargas antiguas de todas las fórmulas y casks, y quita las versiones viejas de las fórmulas instaladas. Por defecto borra las descargas de más de 120 días; ese límite se cambia con HOMEBREW_CLEANUP_MAX_AGE_DAYS.
También puedes limpiar una sola fórmula o cask:
brew cleanup wget
Paso 4: vacía toda la caché con –prune=all
El brew cleanup normal respeta las descargas recientes. Si quieres vaciar la caché entera, usa --prune. El manual indica que borra los archivos de caché con más de los días que indiques y que, para borrarlo todo, se usa --prune=all.
Primero simula:
brew cleanup -n --prune=all
brew cleanup --prune=all
Existe además -s (--scrub), que limpia la caché incluidas las descargas de las versiones más recientes. Para casi todo el mundo basta con --prune=all.
Paso 5: quita dependencias sin uso con brew autoremove
brew autoremove desinstala las fórmulas que solo se instalaron como dependencia de otra y que ya no hacen falta (manual). También tiene modo de prueba:
brew autoremove -n
Revisa la lista. Si ves una fórmula que usas por tu cuenta (por ejemplo, empezaste a usar openssl o python directamente después de que otra herramienta los instalara), añádela a HOMEBREW_NO_CLEANUP_FORMULAE (lo verás más abajo): según el manual, Homebrew se niega a limpiar o a desinstalar con autoremove cualquier fórmula de esa lista.
brew autoremove
Cómo funciona la limpieza automática
Homebrew ya limpia por su cuenta, y por eso muchas Mac nunca acumulan demasiado. El manual explica que después de brew install, brew upgrade y brew reinstall, salvo que esté definida HOMEBREW_NO_INSTALL_CLEANUP, se ejecuta brew cleanup para las fórmulas y casks instalados o, cada 30 días, para todos los paquetes. Esos 30 días vienen de HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS, que puedes cambiar.
Las preguntas frecuentes añaden que Homebrew desinstala automáticamente las versiones viejas de una fórmula cuando la actualizas con brew upgrade.
Variables útiles, todas en la sección de entorno del manual:
| Variable | Qué hace |
|---|---|
HOMEBREW_NO_INSTALL_CLEANUP |
Apaga la limpieza automática después de install, upgrade y reinstall |
HOMEBREW_NO_CLEANUP_FORMULAE |
Lista separada por comas de fórmulas que Homebrew nunca limpia ni quita con autoremove |
HOMEBREW_CLEANUP_MAX_AGE_DAYS |
Antigüedad máxima de los archivos en caché (por defecto 120) |
HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS |
Días entre limpiezas completas (por defecto 30) |
HOMEBREW_NO_AUTOREMOVE |
Evita que brew cleanup y brew uninstall quiten solas las dependencias sin uso |
HOMEBREW_CACHE |
Lleva la caché de descargas a otra carpeta |
Cuándo conservar versiones viejas
Si un proyecto necesita una versión exacta, apagar la limpieza para todo suele ser demasiado. Es mejor proteger solo esa fórmula. Añade esta línea a tu ~/.zprofile (o al archivo que lea tu shell):
export HOMEBREW_NO_CLEANUP_FORMULAE="postgresql@16,node@20"
Cambia los nombres por las fórmulas que quieras proteger. Si defines HOMEBREW_NO_INSTALL_CLEANUP=1, recuerda que el espacio irá creciendo hasta que ejecutes brew cleanup tú mismo.
Por qué puedes tener muchas versiones viejas
Si brew list --versions muestra muchas versiones, comprueba si HOMEBREW_NO_INSTALL_CLEANUP está en tus archivos de configuración:
grep -n HOMEBREW_ ~/.zprofile ~/.zshrc 2>/dev/null
Es habitual copiarla de un tutorial para que las instalaciones vayan más rápido y luego olvidarse de ella.
Una rutina segura
Una vez al mes, o cuando el disco se esté llenando:
du -sh "$(brew --cache)"para ver el tamaño.brew cleanup -ny lee la lista.brew cleanup.brew autoremove -n, lee la lista y, si todo cuadra,brew autoremove.- Solo si necesitas más espacio:
brew cleanup --prune=all.
No borres a mano carpetas del Cellar ni del prefijo de Homebrew (/opt/homebrew en Apple Silicon, según la página de instalación; brew --prefix te muestra el tuyo). Homebrew guarda enlaces y registros de cada paquete, y borrar archivos directamente puede dejar enlaces rotos. Usa brew uninstall.
Homebrew rara vez es lo que más ocupa en la Mac de un desarrollador. Si sigues necesitando espacio, revisa DerivedData de Xcode, Docker y las carpetas node_modules, que suelen crecer mucho más rápido.
Resumen
brew cleanup -nmuestra lo que se borraría, sin borrar nada.brew cleanupquita versiones viejas y descargas de más de 120 días.brew cleanup --prune=allvacía toda la caché de descargas.brew autoremovedesinstala dependencias que nadie usa; simúlalo antes con-n.HOMEBREW_NO_INSTALL_CLEANUPapaga la limpieza automática yHOMEBREW_NO_CLEANUP_FORMULAEprotege fórmulas concretas.
Para ver el panorama completo de tu disco, lee cómo liberar espacio en Mac o descarga Pruneo y míralo en segundos.
Preguntas frecuentes
¿Es seguro ejecutar brew cleanup?
Sí, en la mayoría de los casos. Borra versiones viejas de las fórmulas instaladas y descargas antiguas, no la versión que estás usando. Lo único que pierdes es la posibilidad de volver a una versión anterior sin reinstalarla.
¿Dónde está la caché de Homebrew en Mac?
Por defecto en ~/Library/Caches/Homebrew. Ejecuta brew --cache para ver la ruta exacta en tu Mac, porque se puede cambiar con la variable HOMEBREW_CACHE.
¿Homebrew se limpia solo?
Sí. Después de brew install, brew upgrade o brew reinstall limpia los paquetes afectados, y cada 30 días limpia todos. Puedes desactivarlo con HOMEBREW_NO_INSTALL_CLEANUP.
¿Qué diferencia hay entre brew cleanup y brew autoremove?
brew cleanup borra versiones viejas y descargas guardadas en caché. brew autoremove desinstala fórmulas que solo se instalaron como dependencia y que ya ninguna fórmula instalada necesita.