le-epoptes: Corrigir conflito com dpkg-divert na atualização de versões antigas
O le-epoptes usa um divert no script do epoptes e insere um script próprio no lugar que executa as funções requeridas e no final chama o epoptes original. Porem, nas versões antigas, esse divert era criado na instalação do pacote mas não era removido na limpeza do pacote. Esse erro acontece nas versões abaixo de 0.1.0 do pacote le-lab.
Por isso, foi necessário adicionar uma condição na instalação do le-lab pra remover o diverge do script do epoptes se estiver sendo feito um upgrade de uma versão abaixo de 0.1.0. Esse procedimento ocorre no script postinst do le-lab, porque o le-epoptes era originalmente parte desse pacote.
Só que isso causa um erro na instalação do novo pacote le-all, quando já está instalada no computador uma versão antiga (< 0.1.0) do le-lab. Tanto o le-lab como o le-epoptes são dependências do pacote, e os dois são instalados simultaneamente pelo apt. Por isso, ocorre um conflito quando o apt tenta instalar o le-epoptes antes do le-lab estar configurado(rodar o postinst). O le-lab ainda não removeu o seu divert, fazendo com que o divert do le-epoptes seja bloqueado, e fazendo com que o pacote não seja configurado.
Possíveis soluções:
-
Uma ideia sugerida pela @apb14 foi de mover a remoção do divert no le-lab do postinst para o preinst, fazendo com que esse procedimento ocorra antes da configuração do le-epoptes, que é o ponto de conflito. O problema disso é que como o divert é removido, o script original do epoptes é renomeado de volta com o nome 'epoptes'. E como o pacote instalava um script chamado 'epoptes', o debhelper remove automaticamente esse script por achar que o script faz parte do pacote. Pra solucionar isso, teria que ser pensado um meio de 'burlar' a remoção do script pelo debhelper. Um jeito seria renomear o script para algo como 'epoptes2' no preinst, e renomear de volta para 'epoptes' no postinst.
-
Outra opção é alterar o le-lab de 'Depends' no script control do le-epoptes para 'Pre-depends'. Isso faz com que o le-epoptes espere o le-lab estar completamente configurado antes de ter permissão para ser instalado. é uma solução mais simples e mais limpa, mas o guia de uso do debian recomenda evitar o uso do 'Pre-depends'. Como é um caso isolado e só vai ter um pacote sendo usado nessa seção, provavelmente essa é a melhor solução para esse problema.