Desinstalar Homebrew con el script oficial
Homebrew incluye un desinstalador oficial, y hace lo que dice. La sorpresa es el alcance: elimina Homebrew y elimina lo que Homebrew instaló. El peso de esos dos hechos cambia según por qué estás aquí.
Si solo necesitas espacio en disco, comprueba cuánto usa Homebrew antes de quitarlo. Si una sola formula falla, desinstalar todo el entorno es innecesario.
Antes de seguir, anota brew leaves y la lista de casks. Luego ejecuta el desinstalador oficial con --dry-run y lee el alcance como si fuera un plan de borrado. Si el problema es un solo paquete, detente aquí y usa brew uninstall, o sigue la ruta más segura de limpieza de Homebrew.
Cuándo no debes desinstalar Homebrew
Omite la opción nuclear si encaja alguno de estos casos:
- Una formula o un cask está roto: usa
brew uninstall <name>y luegobrew autoremovesi quedan dependencias huérfanas. - Solo necesitas espacio:
brew cleanup -sborra versiones antiguas y descargas sin eliminar el prefijo. - Todavía necesitas
git,node,python, servidores de bases de datos o herramientas CLI que vinieron de Homebrew. El desinstalador se lleva Cellar y Caskroom. - Planeas reinstalar el mismo conjunto mañana en el mismo Mac. Exporta las listas de abajo, limpia con
brew cleanupy conserva la instalación.
Desinstala cuando dejas Homebrew de forma definitiva, migras a un prefijo limpio tras una instalación rota, o vacías una máquina donde ya no quieres ninguno de esos paquetes.
Conoce tu prefijo: Intel, Apple Silicon y restos de Rosetta
El prefijo predeterminado de Homebrew depende del chip:
| Mac | Prefijo predeterminado | Binario brew |
|---|---|---|
| Apple Silicon | /opt/homebrew |
/opt/homebrew/bin/brew |
| Intel | /usr/local |
/usr/local/bin/brew |
Confirma lo que realmente tienes antes de borrar nada:
uname -m
brew --prefix
which brew
arm64 es Apple Silicon. x86_64 es Intel (o un terminal Rosetta). En un Mac Apple Silicon migrado, un Homebrew Intel antiguo bajo /usr/local puede seguir existiendo junto a /opt/homebrew. El script oficial de desinstalación busca el valor predeterminado de tu máquina y, en arm64, también considera /usr/local para no pasar por alto un prefijo Intel sobrante. Si mantienes dos prefijos a propósito, pasa --path para quitar el que pretendes.
No borres a mano todo /usr/local en Intel. Ese directorio se comparte con otro software. Usa el script oficial, que apunta a los árboles propios de Homebrew.
El desinstalador oficial
La FAQ de Homebrew apunta al script de desinstalación del repositorio Homebrew/install. Prefiere copiar el comando desde esa página si Homebrew lo cambia algún día. El one-liner actual es:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
Si quieres leer el script antes de ejecutarlo, descárgalo primero:
curl -O https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh
less uninstall.sh
/bin/bash uninstall.sh --help
Opciones útiles:
--dry-run(también-n): imprime lo que se eliminaría y no cambia nada. Empieza aquí en una máquina que te importe.--path=PATH: desinstalar un prefijo concreto (por ejemplo/usr/localen Apple Silicon tras una instalación de la era Rosetta).--force: omite el aviso de confirmación (también implícito cuandoNONINTERACTIVEestá definido).--skip-cache-and-logs: deja en paz los directorios de caché y registros.
Ignora el gist antiguo de mxcl y cualquier guía que aún diga que hagas cd $(brew --prefix) y borres con git ls-files. Ese flujo apuntaba al diseño temprano de /usr/local y es inseguro en instalaciones modernas.
Qué elimina realmente el script
El desinstalador quita el prefijo de Homebrew y los directorios debajo: bin, etc, include, lib, opt, sbin, share, var, Frameworks, y tanto Cellar como Caskroom.
Esos dos últimos son el punto. Cellar es donde viven los archivos de cada formula, y Caskroom donde viven los metadatos de los casks. Quitar Homebrew los quita, así que cada herramienta de línea de comandos instalada a través de él desaparece a la vez.
También limpia ~/Library/Caches/Homebrew y ~/Library/Logs/Homebrew, la caché de Homebrew a nivel de sistema, /etc/paths.d/homebrew, y las apps gestionadas por Homebrew en /Applications y ~/Applications.
Anota lo que tienes antes de quitarlo
Exporta el inventario antes de desinstalar con estos dos comandos:
brew leaves > ~/Desktop/brew-formulae.txt
brew list --cask > ~/Desktop/brew-casks.txt
brew leaves lista las formulas de las que no depende ninguna otra formula o cask instalado. Es un punto de partida útil, no un registro completo de todo lo que instalaste de forma explícita. Revisa estos dos archivos antes de usarlos para reconstruir tu entorno.
Revisa los datos de los paquetes aparte de los archivos de los paquetes. La configuración en tu directorio personal puede permanecer, pero una base Postgres bajo /opt/homebrew/var o /usr/local/var sigue dentro del prefijo de Homebrew. El desinstalador elimina var, así que los datos allí pueden irse con él. Haz una copia de seguridad fuera del prefijo de lo que necesites antes de desinstalar. Detén primero los servicios si los usas:
brew services list
brew services stop --all
Opcional: quitar primero formulas y casks
Si quieres un desmontaje por etapas en lugar de una pasada nuclear, desinstala paquetes mientras brew aún funciona:
brew list --formula
brew uninstall --force $(brew list --formula)
brew list --cask
brew uninstall --cask --force $(brew list --cask)
brew autoremove
brew cleanup -s
Eso vacía Cellar y Caskroom pero deja la instalación de Homebrew. Úsalo cuando no estés seguro de los datos bajo var, o cuando quieras liberar espacio de paquetes y conservar brew para un conjunto de herramientas más pequeño más adelante. Cuando hayas terminado con Homebrew en sí, ejecuta igualmente el desinstalador oficial para que el prefijo, los taps y las cachés desaparezcan limpiamente.
Ejecutar la desinstalación
- Ejecuta con
--dry-runy lee cada ruta. - Ejecuta sin
--dry-run, escribeycuando te lo pidan e introduce tu contraseña de macOS sisudoes necesario para directorios protegidos. - Copia cualquier lista de «possible Homebrew files were not deleted» del terminal antes de cerrar la ventana.
Ejemplo de dry-run tras descargar el script:
/bin/bash uninstall.sh --dry-run
O con el one-liner remoto: descarga primero para poder pasar opciones sin anidar comillas de forma torpe, y luego ejecuta /bin/bash uninstall.sh.
Lista de comprobación de archivos sobrantes
Cuando el script termina puede indicar que algunos posibles archivos de Homebrew no se eliminaron y que quizá quieras quitarlos tú, seguido de la lista.
Ese es el único lugar donde se nombran esas rutas. Suele deberse a permisos en directorios que Homebrew no creó, y la lista es corta. Cópiala antes de cerrar el terminal, porque volver a ejecutar el desinstalador en una instalación ya eliminada no la volverá a producir.
Los restos típicos están bajo el prefijo que acabas de quitar:
- Apple Silicon:
/opt/homebrew/etc,share,var,Frameworksy directorios vacíos o con propiedad parcial similares - Intel: los mismos nombres bajo
/usr/local, pero nunca borres árboles ajenos de/usr/locala ojo
Si el script nombró una ruta y confirmaste que es solo de Homebrew, elimínala de forma explícita (espacio después de -rf):
sudo rm -rf /opt/homebrew/share
Luego verifica:
ls /opt/homebrew
ls /usr/local/Homebrew
ls ~/Library/Caches/Homebrew
ls ~/Library/Logs/Homebrew
Espera «No such file or directory» cuando esas ubicaciones hayan desaparecido. Si /opt/homebrew o un árbol solo de Homebrew sigue existiendo y el script ya terminó, sudo rm -rf en esa ruta es la limpieza habitual. Comprueba dos veces la ruta antes de pulsar Return.
La configuración de paquetes fuera del prefijo suele quedarse a propósito: ~/.gitconfig, gestores de versiones de lenguajes, carpetas de soporte de apps bajo ~/Library y bases de datos que sacaste de var. Eso no es el prefijo de Homebrew. Quítalas solo cuando sepas a qué pertenecen.
Tu perfil de shell aún lo menciona
El desinstalador no edita .zprofile, .zshrc, .zshenv, .zlogin ni .bash_profile. La línea que el instalador de Homebrew suele añadir se parece a:
eval "$(/opt/homebrew/bin/brew shellenv)"
En Macs Intel el PATH predeterminado ya incluye /usr/local/bin, así que muchas instalaciones nunca necesitaron esa línea. En Apple Silicon es necesaria para encontrar brew, y tras la desinstalación cada shell nuevo intenta ejecutar un binario que ya no existe.
Busca y elimina brew shellenv (y cualquier exportación PATH a /opt/homebrew/bin o /usr/local/bin añadida a mano que ya no quieras):
grep -n "brew shellenv\|/opt/homebrew\|/usr/local/bin" ~/.zprofile ~/.zshrc ~/.zshenv ~/.zlogin ~/.bash_profile ~/.bashrc 2>/dev/null
Abre después una pestaña nueva del terminal. Si el aviso desapareció y which brew no imprime nada, la limpieza del PATH está hecha. Deja la línea solo si planeas reinstalar de inmediato.
Modos de fallo habituales
Permission denied en restos. El script listó rutas pero no pudo borrarlas. Usa sudo rm -rf en cada ruta nombrada, con un espacio entre -rf y la ruta. rm -rf/opt/... falla con illegal option porque la ruta se interpretó como opciones.
Desinstalación parcial / «Homebrew is already installed». Un intento anterior dejó .git, Cellar o bin/brew. Vuelve a ejecutar el script oficial con el --path correcto, o elimina el prefijo sobrante que indique el script, y luego reinstala desde la documentación de instalación de Homebrew si aún lo quieres.
brew: command not found tras una limpieza a medias. O la desinstalación terminó y el PATH sigue apuntando al prefijo antiguo (arregla la línea del shell), o se quitó brew mientras quedan paquetes. No persigas el gist clásico. Usa el script oficial con --path si aún existe un directorio de prefijo.
Prefijo incorrecto en Apple Silicon. Quitaste /opt/homebrew pero las herramientas de la era Rosetta siguen bajo /usr/local. Ejecuta el script con --path=/usr/local tras confirmar que ese árbol es de Homebrew, no una mezcla de software ajeno.
Servicios e ítems de inicio siguen llamando a binarios ausentes. Detén brew services antes de desinstalar cuando puedas. Después, revisa los ítems de inicio y cualquier LaunchAgent que aún referencie /opt/homebrew o /usr/local/Cellar.
Entradas de blog antiguas y el gist de 2011. Las guías que borran con git ls-files y pbcopy pertenecen a un diseño anterior de Homebrew. Prefiere solo https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh.
Valora si te basta la operación más pequeña
Para una limpieza menor, brew cleanup quita versiones antiguas y descargas en caché, brew uninstall <formula> quita un paquete y brew autoremove quita dependencias sin uso. En la vista Analyze de Mole, escanea la carpeta de Homebrew antes de la limpieza y otra vez después para comparar su tamaño. Mole no rastrea automáticamente los cambios hechos por estos comandos.
Reconstrucción a partir de la lista exportada
Cuando Homebrew esté instalado en la máquina nueva, dos comandos restauran lo que tenías:
xargs brew install < brew-formulae.txt
xargs brew install --cask < brew-casks.txt
Se mantienen separados porque los casks necesitan --cask, y una lista mezclada falla en la mitad de sus entradas.
brew list incluye dependencias, así que reproducir la lista entera marca esos paquetes como solicitados de forma explícita y cambia lo que brew autoremove podrá quitar después. brew leaves evita gran parte de eso, pero no es lo mismo que tu historial de paquetes solicitados: un paquete que elegiste también puede ser requerido por otro. Revisa la lista y añade las herramientas que aún necesites antes de reinstalar.
Preguntas frecuentes
¿Desinstalar Homebrew elimina todos los paquetes que instaló?
Sí para todo lo que siga dentro de Cellar y Caskroom. El script oficial elimina el prefijo, así que formulas y metadatos de casks se van con él. La configuración y los datos fuera del prefijo pueden permanecer.
¿Cuál es la diferencia entre /opt/homebrew y /usr/local?
/opt/homebrew es el valor predeterminado en Apple Silicon. /usr/local es el valor predeterminado en Intel, y también puede contener un Homebrew Rosetta antiguo en un Mac migrado. Comprueba siempre brew --prefix antes de borrar.
¿Debo desinstalar cada formula antes de ejecutar el script de desinstalación?
Solo si quieres una limpieza por etapas o necesitas inspeccionar primero los datos de var. El script ya elimina los paquetes instalados en el prefijo. Exporta tus listas de cualquier forma si podrías reinstalar más adelante.
¿Por qué quedan directorios después de desinstalar?
Los permisos o directorios que Homebrew no creó pueden bloquear el borrado. El script imprime esas rutas una sola vez. Elimínalas con sudo solo cuando las reconozcas como restos de Homebrew.
¿Es seguro borrar todo /usr/local?
No. En Macs Intel esa carpeta es compartida. Usa el script oficial de desinstalación y luego elimina solo las rutas que nombre si queda algo.
Sigo viendo errores de brew shellenv en cada terminal nuevo. ¿Qué hago?
Quita la línea eval "$(...brew shellenv)" de tus archivos de inicio de zsh o bash y abre una pestaña nueva. El desinstalador no edita esos archivos por ti.