O comando que remove o aviso de assinatura: a linha mais difundida, o dano mais silencioso
A primeira coisa que todo mundo encontra depois de instalar é o aviso de assinatura, e a primeira solução que todo mundo acha é um comando de uma linha. A versão difundida desse comando foi medida: pode quebrar a biblioteca inteira da interface.
AtlasPVE ·
Este verbete responde a
- proxmox remover aviso de assinatura
- proxmox no valid subscription
- proxmox post install script
- o que fazer depois de instalar o proxmox
- proxmox remover o nag
Você instalou o Proxmox, entrou e apareceu o aviso de assinatura. Incomoda, porque volta a cada login. Você pesquisa e acha um comando de uma linha. Parece funcionar.
Este artigo é sobre esse comando, mas o assunto de verdade não é o comando: o custo silencioso de colar algo que você não entende.
O erro medido
Dentro da linha amplamente divulgada há um defeito real, e o defeito é sutil.
Nas expressões regulares básicas das ferramentas clássicas de texto, uma barra vertical escrita com contrabarra não é um caractere comum, é o operador de alternativa. A condição no código da interface contém duas barras verticais, e quando o comando as escapa do jeito que estão, entre dois operadores de alternativa nasce uma alternativa vazia.
Uma alternativa vazia casa em toda posição do arquivo. Executada junto com "substituir tudo", a expressão espalha a mudança pelo arquivo inteiro.
Isso não é palpite. Foi medido em uma cópia do arquivo real: 26458 de 26458 linhas mudaram, e a contagem de false no arquivo foi de 558 para 26458. O administrador que rodou aquele comando teria quebrado toda a biblioteca de interface do Proxmox.
Ainda há um segundo problema: a condição visada não cabe em uma linha, o Proxmox a espalha em seis. Uma ferramenta que trabalha linha a linha jamais teria conseguido acertá-la corretamente de qualquer forma.
Por que ninguém percebeu
Porque o dano é silencioso. O comando não dá erro, nada acende em vermelho. A interface pode continuar funcionando por um tempo, o problema aparece depois, e naquele momento ninguém liga com "o comando que colei semana passada".
A lição geral: "funciona pra todo mundo" não é prova. Na maioria das vezes é só prova de que ninguém olhou.
Quatro regras para toda mudança dessa classe
Qualquer operação que toque um arquivo de sistema, seja quem for que a faça, precisa carregar estes quatro pontos.
O backup é feito uma vez e não é sobrescrito. Atualizá-lo a cada execução significa que na segunda você faz backup do estado quebrado.
A mira é estreita. Se o texto visado realmente mudou, a operação não é feita. Mudar no chute o mais parecido é pior do que não mudar nada.
Depois de escrever, relê-se. Se o resultado esperado não aparecer, o backup é restaurado. Uma escrita não dar erro não quer dizer que escreveu a coisa certa.
Deixa-se uma marca. A pergunta "este arquivo está alterado" precisa ser respondida pela presença de uma marca, não por palpite.
O caso em que ninguém pensa: e se o backup já estiver quebrado
Mesmo fazendo os quatro, sobra uma brecha. E se outra ferramenta quebrou o arquivo antes e você fez o backup depois?
Aí a reversão traz de volta o arquivo quebrado e você acha que consertou. Por isso a reversão também precisa ser verificada: o original voltou mesmo, ou o próprio backup já estava alterado?
Esse é um exemplo da pergunta que precisa ser feita o tempo todo ao trabalhar com uma máquina já instalada: não o que acontece numa instalação limpa, mas o que acontece numa máquina que carrega um estado antigo.
O que o Atlas faz
O Atlas faz esse trabalho dentro do produto em vez de colar um comando, e aplica os quatro pontos acima.
O backup é feito uma vez e não é sobrescrito. A mira é estreita: um padrão flexível quanto a espaços mas fiel no resto, de modo que continua valendo se o Proxmox mudar a formatação, mas se a condição em si mudou, nada é feito. Depois de escrever, o arquivo é relido e verificado; se o resultado esperado não aparecer, o backup é restaurado. E o texto colocado carrega uma marca, então a pergunta "está alterado" é respondida com certeza.
No lado da reversão o último caso também é tratado: depois de restaurar o backup, verifica-se se o original voltou mesmo, e se não voltou isso é dito com clareza.
A única frase que este artigo realmente quer dizer é esta: o trabalho não é difícil, mas a diferença entre fazer certo e parecer que funciona passa por medir.
Fontes
A documentação oficial do Proxmox. Em inglês, e é ela que dá a palavra final neste assunto.