Tres fallas distintas llevan el mismo mensaje de error del cask, y cada una tiene su propio camino de recuperación. El desinstalador del proveedor puede faltar en la versión instalada, un auxiliar puede seguir ejecutándose y reteniendo sus archivos, o el recibo del paquete puede no coincidir con lo que hay en el disco. El viejo remedio del foro que rescató uno de esos casos no te dice nada sobre cuál tienes. Leer el registro propio del cask es la forma de averiguarlo.

Tres fallas que se parecen

Un desinstalador ausente se manifiesta como una ruta que no existe cuando el cask intenta ejecutarlo. Un auxiliar vivo se manifiesta como una eliminación que empieza y luego se atasca, o como una aplicación que reaparece después de cerrarla. Un recibo obsoleto se manifiesta cuando el registro propio del cask y la base de datos del instalador no coinciden sobre si el producto está instalado siquiera.

Guarda el primer texto del error antes de reintentar nada. Un segundo intento sobrescribe el estado que produjo el mensaje, y la línea original es lo que un mantenedor o un proveedor necesita para distinguir estos casos. Cópiala en un lugar que sobreviva al reintento.

Si esta VPN lleva la conexión que usas para trabajar, prepara primero otra vía de administración. Quitar el cliente que te da acceso es una decisión sobre la ventana de mantenimiento, no sobre Homebrew. Ese orden es también lo que hace que una desinstalación fallida sea recuperable en lugar de definitiva.

Lee qué instaló realmente el cask

La visión propia de Homebrew es la evidencia más barata disponible, y no modifica nada:

brew info --cask openvpn-connect
brew list --cask openvpn-connect

El primer comando imprime los metadatos del cask y los artefactos que gestiona; el segundo lista lo que consta como instalado. Ninguno de los dos demuestra que cada auxiliar de la máquina coincida con la receta actual, y es exactamente por eso que una instalación antigua puede fallar de una manera que el código actual del cask no describe. Trata las dos salidas como una afirmación que hay que comprobar, no como la última palabra sobre lo que existe.

Compara la versión registrada con la versión propia de la aplicación antes de elegir un camino. Una discrepancia explica un desinstalador ausente sin ninguna falla más profunda, y la respuesta es actualizar a la versión que el cask espera, no una limpieza manual.

Qué añade zap y qué cuesta

La estrofa de desinstalación de un cask se ocupa de los artefactos que declara la receta: cerrar la aplicación, descargar las tareas de inicio, eliminar un elemento de inicio de sesión, olvidar los recibos del paquete y borrar el paquete de la aplicación. Ese es el camino normal, y es el que debería funcionar.

--zap es una petición distinta. Pide a Homebrew que elimine también las preferencias de usuario y los recursos compartidos, y la documentación advierte de que eso puede afectar a otro software. En el cask de OpenVPN Connect la estrofa zap borra openvpn.keychain-db y limpia los datos de soporte de aplicaciones del usuario, lo que significa que las credenciales guardadas y los perfiles de conexión se van con ella. Si el perfil viene de una organización, confirma que puedes volver a inscribirte antes de elegir este camino.

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

Caminos que parecen decisivos y no lo son

Escribir un remove.sh falso que termine con código de salida cero es la peor opción de la lista. Hace que la desinstalación informe de éxito mientras las tareas de inicio, los recibos y los datos de la aplicación se quedan en su sitio, así que la siguiente instalación hereda un producto a medio quitar y un registro que dice lo contrario.

Borrar a mano el directorio Caskroom o el paquete de la aplicación produce un estado parecido desde el otro lado. Los archivos desaparecen mientras el recibo se queda. Cada orden posterior tiene entonces que razonarse contra una máquina que ya no coincide con su propia base de datos.

Un brew update-reset en todo el repositorio es una intervención mayor de lo que justifica un solo cask fallido. Cambia el estado de tus taps para arreglar un problema que nunca fue sobre el estado de los taps, y puede dejarte depurando un Homebrew distinto del que empezaste.

Decidir en orden

Sigue la secuencia: lee los artefactos registrados del cask, compara versiones, cierra cada componente en ejecución, reintenta la desinstalación normal y solo entonces considera zap. Si el camino normal sigue fallando, guarda el error y llévalo a los mantenedores del cask o al proveedor con los números de versión.

El Cask Cookbook dice explícitamente que los instaladores de paquetes necesitan técnicas de desinstalación específicas del producto y que zap es opcional y puede eliminar recursos compartidos. Ese planteamiento es la regla de decisión: primero la desinstalación normal, zap cuando aceptas el coste de las credenciales, nunca el borrado manual.

Artículos relacionados