Homebrew no desinstala OpenVPN Connect: ¿qué camino encaja?
Una desinstalación fallida de cask es una de tres fallas. Lee los artefactos del cask, compara versiones y luego elige entre reintentar, actualizar o zap.
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-connectEl 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.
| 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 |
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.