Três falhas diferentes carregam a mesma mensagem de erro do cask, e cada uma tem o seu próprio caminho de recuperação. O desinstalador do fornecedor pode faltar na versão instalada, um auxiliar pode ainda estar em execução e a segurar os seus ficheiros, ou o recibo do pacote pode não coincidir com o que está no disco. A velha solução do fórum que salvou um desses casos não lhe diz nada sobre qual tem. Ler o registo próprio do cask é a forma de descobrir.

Três falhas que se parecem

Um desinstalador em falta manifesta-se como um caminho que não existe quando o cask tenta executá-lo. Um auxiliar ativo manifesta-se como uma remoção que começa e depois encrava, ou como uma aplicação que reaparece depois de a fechar. Um recibo desatualizado manifesta-se quando o registo do cask e a base de dados do instalador não concordam sobre se o produto está sequer instalado.

Guarde o primeiro texto do erro antes de tentar mais nada. Uma segunda tentativa substitui o estado que produziu a mensagem, e a linha original é o que um mantenedor ou fornecedor precisa para distinguir estes casos. Copie-a para um local que sobreviva à nova tentativa.

Se esta VPN transporta a ligação que usa para trabalhar, prepare primeiro outro caminho de administração. Remover o cliente que lhe dá acesso é uma decisão sobre a janela de manutenção, não sobre o Homebrew. É também esta ordem que torna uma desinstalação falhada recuperável em vez de definitiva.

Leia o que o cask realmente instalou

A visão própria do Homebrew é a prova mais barata disponível, e não modifica nada:

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

O primeiro comando imprime os metadados do cask e os artefactos que gere; o segundo lista o que está registado como instalado. Nenhum dos dois prova que cada auxiliar da máquina corresponde à receita atual, e é exatamente por isso que uma instalação mais antiga pode falhar de uma forma que o código atual do cask não descreve. Trate as duas saídas como uma afirmação a verificar, não como a última palavra sobre o que existe.

Compare a versão registada com a versão própria da aplicação antes de escolher um caminho. Uma discrepância explica um desinstalador em falta sem qualquer falha mais profunda, e a resposta é atualizar para a versão que o cask espera, não uma limpeza manual.

O que o zap acrescenta e quanto custa

A estrofe de desinstalação de um cask trata dos artefactos que a receita declara: fechar a aplicação, descarregar as tarefas de arranque, remover um item de início de sessão, esquecer os recibos do pacote e apagar o pacote da aplicação. Esse é o caminho normal, e é o que deveria funcionar.

--zap é um pedido diferente. Pede ao Homebrew que remova também as preferências do utilizador e os recursos partilhados, e a documentação avisa que isso pode afetar outro software. No cask do OpenVPN Connect a estrofe zap apaga openvpn.keychain-db e limpa os dados de suporte de aplicações do utilizador, o que significa que as credenciais guardadas e os perfis de ligação vão com ela. Se o perfil vier de uma organização, confirme que consegue voltar a inscrever-se antes de escolher este caminho.

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

Caminhos que parecem decisivos e não são

Escrever um remove.sh falso que termina com código de saída zero é a pior opção da lista. Faz a desinstalação relatar sucesso enquanto as tarefas de arranque, os recibos e os dados da aplicação ficam no lugar, pelo que a instalação seguinte herda um produto meio removido e um registo que diz o contrário.

Apagar à mão o diretório Caskroom ou o pacote da aplicação produz um estado semelhante do outro lado. Os ficheiros desaparecem enquanto o recibo fica. Cada comando posterior tem então de ser pensado contra uma máquina que já não corresponde à sua própria base de dados.

Um brew update-reset em todo o repositório é uma intervenção maior do que justifica um único cask falhado. Muda o estado dos seus taps para corrigir um problema que nunca foi sobre o estado dos taps, e pode deixá-lo a depurar um Homebrew diferente daquele com que começou.

Decidir por ordem

Siga a sequência: leia os artefactos registados do cask, compare versões, feche cada componente em execução, repita a desinstalação normal e só depois considere o zap. Se o caminho normal continuar a falhar, guarde o erro e leve-o aos mantenedores do cask ou ao fornecedor com os números de versão.

O Cask Cookbook diz explicitamente que os instaladores de pacotes precisam de técnicas de desinstalação específicas do produto e que o zap é opcional e pode remover recursos partilhados. Esse enquadramento é a regra de decisão: desinstalação normal primeiro, zap quando aceita o custo das credenciais, eliminação manual nunca.

Artigos relacionados