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-connect

La 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í.

ConditionPath that fitsPath to avoid
Uninstaller path missing after an OS upgradeUpgrade the cask to the version matching the appHand-writing a replacement script
Helper still running during removalQuit the app and its menu agent, then retryDeleting the bundle while the helper runs
Receipt exists but files are goneForget the receipt with the cask's own toolingRecursive deletion of the Caskroom entry
You need the machine clean and can re-enrollZap, after reading the stanzaZap 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.

Articles relacionats