Disinstallare Homebrew senza perdere l'elenco dei pacchetti
Homebrew fornisce un disinstallatore ufficiale, e fa quello che promette. La sorpresa sta nella portata: rimuove Homebrew e rimuove quello che Homebrew ha installato, e i due aspetti contano in modo diverso a seconda del motivo per cui sei qui.
Se sei qui per recuperare spazio su disco, sulla maggior parte dei Mac da sviluppatore è il recupero più grosso che puoi fare. Se sei qui perché una formula si comporta male, è molto più di quanto volevi.
Il disinstallatore ufficiale
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
Leggilo prima di eseguirlo. Lo script è breve ed è la descrizione autorevole di quello che sta per succedere: nessun articolo può sostituirla.
Supporta --dry-run, e su una macchina a cui tieni è il primo comando da lanciare: stampa quello che verrebbe eliminato e non modifica nulla.
Cosa elimina davvero lo script
Il disinstallatore rimuove il prefisso di Homebrew e le directory sottostanti: bin, etc, include, lib, opt, sbin, share, var, Frameworks, e sia Cellar che Caskroom.
Contano soprattutto queste ultime due. Nella Cellar stanno i file di ogni formula, e nella Caskroom i metadati dei cask. Rimuovere Homebrew le rimuove, quindi ogni strumento da riga di comando installato con Homebrew sparisce nello stesso momento.
Svuota anche ~/Library/Caches/Homebrew e ~/Library/Logs/Homebrew, la cache di Homebrew a livello di sistema, /etc/paths.d/homebrew, e le app gestite da Homebrew in /Applications e ~/Applications.
Prendi nota di quello che hai prima di rimuoverlo
L'inventario non si recupera più dopo, e basta un comando:
brew leaves > ~/Desktop/brew-formulae.txt
brew list --cask > ~/Desktop/brew-casks.txt
brew leaves elenca le formule che hai chiesto tu piuttosto che ogni dipendenza portata dietro, ed è l'elenco che ti serve davvero quando ricostruisci. Su una macchina nuova con quei due file non passi un giorno a ricordare: basta una riga di brew install.
Tutto ciò che un pacchetto ha salvato fuori dalla propria directory resta e conviene tenerlo: una directory di dati Postgres, un database locale sotto /opt/homebrew/var, la configurazione nella home. Il disinstallatore rimuove var sotto il prefisso, quindi un database che si trova lì sparisce con esso. Copialo prima se ti interessa.
Il messaggio finale che di solito si scorre via
Quando lo script termina può avvisare che alcuni possibili file di Homebrew non sono stati eliminati e che potresti volerli rimuovere tu, e poi elencarli.
È l'unico punto in cui quei percorsi compaiono. Di solito succede per i permessi su directory che Homebrew non ha creato, e l'elenco è breve. Copialo da qualche parte prima di chiudere il Terminale, perché rieseguire il disinstallatore su un'installazione già rimossa non lo produrrà di nuovo.
Il profilo della shell lo menziona ancora
Il disinstallatore non modifica .zprofile, .zshrc o .bash_profile. La riga eval "$(/opt/homebrew/bin/brew shellenv)" che hai aggiunto in fase di installazione resta, e ogni nuova shell prova a eseguire un binario che non esiste più.
È innocuo, ma rumoroso. Rimuovi la riga, o lasciala se pensi di reinstallare.
Valuta se ti basta un'operazione più piccola
La maggior parte dei motivi per disinstallare Homebrew si risolve meglio con qualcosa di più mirato. brew cleanup recupera versioni vecchie e download in cache. brew uninstall <formula> rimuove una cosa sola. brew autoremove elimina le dipendenze che non servono più a niente. Qualunque cosa esegui, Mole ti mostra quanto pesa il prefisso prima e dopo, ed è il numero che ti dice se la rimozione completa serviva davvero.
Ricostruire dall'elenco esportato
Una volta installato Homebrew sulla nuova macchina, due comandi ripristinano ciò che avevi:
xargs brew install < brew-formulae.txt
xargs brew install --cask < brew-casks.txt
Restano separati perché i cask richiedono --cask, e un elenco misto fallisce su metà delle voci.
Questo approccio funziona grazie a brew leaves, non a brew list. brew list include le dipendenze, quindi ripeterlo installerà esplicitamente centinaia di pacchetti che sarebbero arrivati da soli, e brew autoremove non li toccherà più in seguito perché li hai chiesti per nome. brew leaves restituisce solo ciò che hai installato davvero e lascia il grafo delle dipendenze a Homebrew.