Homebrew no pot desinstal·lar OpenVPN Connect: quin camí encaixa?
Una desinstal·lació fallida de cask és una de tres fallades. Llegeix els artefactes del cask, compara versions i després tria entre reintentar, actualitzar o zap.
Tres fallades diferents porten el mateix missatge d'error del cask, i cadascuna té el seu propi camí de recuperació. Pot faltar el desinstal·lador del proveïdor a la versió instal·lada, pot haver-hi un auxiliar encara en execució que reté els seus fitxers, o el rebut del paquet pot no coincidir amb el que hi ha al disc. La vella solució del fòrum que va rescatar un d'aquests casos no et diu res sobre quin tens. Llegir el registre propi del cask és com ho esbrines.
Tres fallades que semblen iguals
Un desinstal·lador absent es manifesta com un camí que no existeix quan el cask intenta executar-lo. Un auxiliar viu es manifesta com una eliminació que comença i s'atura, o com una aplicació que reapareix després que la tanquis. Un rebut obsolet es manifesta quan el registre propi del cask i la base de dades de l'instal·lador no coincideixen sobre si el producte està instal·lat.
Guarda el primer text de l'error abans de reintentar res. Un segon intent sobreescriu l'estat que va produir el missatge, i la línia original és el que necessita un mantenidor o un proveïdor per distingir aquests casos. Copia-la en un lloc que sobrevisqui al reintent.
Si aquesta VPN porta la connexió que fas servir per treballar, prepara primer un altre camí d'administració. Eliminar el client que et proporciona l'accés és una decisió sobre la finestra de manteniment, no sobre Homebrew. Aquest ordre és també el que fa que una desinstal·lació fallida sigui recuperable en lloc de definitiva.
Llegeix què va instal·lar realment el cask
La visió pròpia de Homebrew és l'evidència més barata disponible, i no modifica res:
brew info --cask openvpn-connect
brew list --cask openvpn-connectLa primera ordre imprimeix les metadades del cask i els artefactes que gestiona; la segona llista el que consta com a instal·lat. Cap de les dues no demostra que cada auxiliar de la màquina coincideixi amb la recepta actual, i és exactament per això que una instal·lació antiga pot fallar d'una manera que el codi actual del cask no descriu. Tracta les dues sortides com una afirmació a comprovar, no com l'última paraula sobre què existeix.
Compara la versió enregistrada amb la versió pròpia de l'aplicació abans de triar un camí. Una discrepància explica un desinstal·lador absent sense cap fallada més profunda, i la resposta és actualitzar a la versió que el cask espera, no netejar a mà.
Què afegeix zap i què costa
L'estrofa de desinstal·lació d'un cask gestiona els artefactes que declara la recepta: tancar l'aplicació, descarregar les tasques d'inici, eliminar un element d'inici de sessió, oblidar els rebuts del paquet i esborrar el paquet de l'aplicació. Aquest és el camí normal, i és el que hauria de funcionar.
--zap és una petició diferent. Demana a Homebrew que elimini també les preferències d'usuari i els recursos compartits, i la documentació adverteix que això pot afectar altre programari. Al cask d'OpenVPN Connect, l'estrofa zap esborra openvpn.keychain-db i buida les dades de suport d'aplicacions de l'usuari, cosa que significa que les credencials desades i els perfils de connexió se'n van amb ell. Si el perfil prové d'una organització, confirma que pots tornar-te a inscriure abans de triar aquest camí.
| 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 |
Camins que semblen decisius i no ho són
Escriure un remove.sh fals que surti amb codi zero és la pitjor opció de la llista. Fa que la desinstal·lació informi d'èxit mentre les tasques d'inici, els rebuts i les dades de l'aplicació queden al seu lloc, així que la instal·lació següent hereta un producte mig eliminat i un registre que diu el contrari.
Esborrar a mà el directori Caskroom o el paquet de l'aplicació produeix un estat semblant des de l'altre costat. Els fitxers desapareixen mentre el rebut es queda. Llavors cal raonar cada ordre posterior contra una màquina que ja no coincideix amb la seva pròpia base de dades.
Un brew update-reset a tot el repositori és una intervenció més gran del que justifica un sol cask fallit. Canvia l'estat dels teus taps per arreglar un problema que mai no era sobre l'estat dels taps, i et pot deixar depurant un Homebrew diferent del que vas començar.
Decidir per ordre
Segueix la seqüència: llegeix els artefactes enregistrats del cask, compara versions, tanca cada component en execució, reintenta la desinstal·lació normal i només després considera zap. Si el camí normal encara falla, guarda l'error i porta'l als mantenidors del cask o al proveïdor amb els números de versió.
El Cask Cookbook diu explícitament que els instal·ladors de paquets necessiten tècniques de desinstal·lació específiques del producte i que zap és opcional i pot eliminar recursos compartits. Aquest plantejament és la regla de decisió: primer la desinstal·lació normal, zap quan acceptes el cost de les credencials, mai l'esborrat manual.