Homebrew non disinstalla OpenVPN Connect: quale strada è giusta?
Una disinstallazione cask fallita è uno di tre guasti. Leggi gli artefatti del cask, confronta le versioni, poi scegli tra riprovare, aggiornare o zap.
Tre guasti diversi portano lo stesso messaggio di errore del cask, e ognuno ha la propria via di recupero. Il disinstallatore del fornitore può mancare nella versione installata, un helper può essere ancora in esecuzione e tenere i suoi file, oppure la ricevuta del pacchetto può non concordare con ciò che è sul disco. Il vecchio espediente del forum che ha salvato uno di quei casi non ti dice nulla su quale hai tu. Leggere il registro proprio del cask è il modo per scoprirlo.
Tre guasti che sembrano uguali
Un disinstallatore mancante si manifesta come un percorso che non esiste quando il cask prova a eseguirlo. Un helper attivo si manifesta come una rimozione che parte e poi si blocca, o come un'applicazione che riappare dopo che l'hai chiusa. Una ricevuta obsoleta si manifesta quando il registro del cask e il database dell'installatore non concordano sul fatto che il prodotto sia installato o meno.
Conserva il primo testo dell'errore prima di riprovare qualsiasi cosa. Un secondo tentativo sovrascrive lo stato che ha prodotto il messaggio, e la riga originale è ciò che serve a un manutentore o a un fornitore per distinguere questi casi. Copiala in un posto che sopravviva al nuovo tentativo.
Se questa VPN trasporta la connessione con cui lavori, prepara prima un'altra via di amministrazione. Rimuovere il client che ti dà accesso è una decisione sulla finestra di manutenzione, non su Homebrew. È anche questo ordine a rendere recuperabile una disinstallazione fallita invece che definitiva.
Leggi cosa ha installato davvero il cask
La vista propria di Homebrew è la prova più economica disponibile, e non modifica nulla:
brew info --cask openvpn-connect
brew list --cask openvpn-connectIl primo comando stampa i metadati del cask e gli artefatti che gestisce; il secondo elenca ciò che risulta installato. Nessuno dei due dimostra che ogni helper della macchina corrisponda alla ricetta attuale, ed è esattamente per questo che un'installazione più vecchia può fallire in un modo che il sorgente attuale del cask non descrive. Tratta i due output come un'affermazione da verificare, non come l'ultima parola su ciò che esiste.
Confronta la versione registrata con la versione propria dell'applicazione prima di scegliere una strada. Una discrepanza spiega un disinstallatore mancante senza alcun guasto più profondo, e la risposta è un aggiornamento alla versione che il cask si aspetta, non una pulizia manuale.
Cosa aggiunge zap e quanto costa
La strofa di disinstallazione di un cask gestisce gli artefatti che la ricetta dichiara: chiudere l'app, scaricare i processi di avvio, rimuovere un elemento di login, dimenticare le ricevute dei pacchetti ed eliminare il bundle dell'applicazione. È la strada normale, ed è quella che dovrebbe funzionare.
--zap è una richiesta diversa. Chiede a Homebrew di rimuovere anche le preferenze utente e le risorse condivise, e la documentazione avverte che questo può influire su altro software. Nel cask di OpenVPN Connect la strofa zap cancella openvpn.keychain-db e svuota i dati di supporto delle applicazioni dell'utente, il che significa che le credenziali salvate e i profili di connessione se ne vanno con essa. Se il profilo arriva da un'organizzazione, conferma di poterti registrare di nuovo prima di scegliere questa strada.
| Condition | Path that fits | Path to avoid |
|---|---|---|
| Uninstaller path missing after an OS upgrade | Upgrade the cask to the version matching the app | Hand-writing a replacement script |
| Helper still running during removal | Quit the app and its menu agent, then retry | Deleting the bundle while the helper runs |
| Receipt exists but files are gone | Forget the receipt with the cask's own tooling | Recursive deletion of the Caskroom entry |
| You need the machine clean and can re-enroll | Zap, after reading the stanza | Zap on a machine whose profiles you cannot rebuild |
Strade che sembrano decisive e non lo sono
Scrivere un falso remove.sh che esce con codice zero è l'opzione peggiore della lista. Fa riportare successo alla disinstallazione mentre i processi di avvio, le ricevute e i dati dell'applicazione restano al loro posto, così l'installazione successiva eredita un prodotto mezzo rimosso e un registro che dice il contrario.
Eliminare a mano la directory Caskroom o il bundle dell'applicazione produce uno stato simile dall'altro lato. I file spariscono mentre la ricevuta resta. Ogni comando successivo va poi ragionato contro una macchina che non corrisponde più al proprio database.
Un brew update-reset su tutto il repository è un intervento più grande di quanto giustifichi un singolo cask fallito. Cambia lo stato dei tuoi tap per risolvere un problema che non ha mai riguardato lo stato dei tap, e può lasciarti a fare debug di un Homebrew diverso da quello con cui hai iniziato.
Decidere in ordine
Segui la sequenza: leggi gli artefatti registrati del cask, confronta le versioni, chiudi ogni componente in esecuzione, riprova la disinstallazione normale e solo dopo considera zap. Se la strada normale fallisce ancora, conserva l'errore e portalo ai manutentori del cask o al fornitore con i numeri di versione.
Il Cask Cookbook dice esplicitamente che gli installatori di pacchetti hanno bisogno di tecniche di disinstallazione specifiche del prodotto e che zap è facoltativo e può rimuovere risorse condivise. Quella cornice è la regola di decisione: prima la disinstallazione normale, zap quando accetti il costo delle credenziali, eliminazione manuale mai.