Passei uma semana fazendo uma série de testes para melhorar a parte de atualização de distribuições que utilizam apt-get e dpkg, ou seja, Debian e todos seus derivados.
O apt-get possui uma série de checagens e realmente são interessantes para servidores e ambientes que necessitam funcionar constantemente e tem a manutenção feita por especialistas, porém considero que para computadores pessoais e de escritório a sua configuração padrão não é boa. As justificativas principais são duas:
Justificativas:
1 - Em servidores a quantidade de pacotes instalados é muito pequena quando comparamos aos desktops, além disso em geral são pacotes muito mais testados e com grau de importância muito alto, enquanto desktops normalmente possuem mais de mil pacotes instalados, entre eles uma grande parte são de muito pouca importância e passam por poucos testes, muitas vezes uma atualização é interrompida por um conflito em um simples widget no desktop que praticamente não tem relevância alguma para o uso do sistema.
Vale lembrar que por vezes ao chegar a esse pacote conflitante o sistema interrompe no meio a atualização e dependendo dos pacotes que foram atualizados antes e dos que ficaram faltando o sistema se torna inutilizável, até mesmo danificando o modo gráfico ou o boot do sistema, o que para a maior parte dos usuários acaba forçando a reinstalação completa da distribuição.
2 - As dependências em circulo, é bastante típico principalmente nos repositórios do Ubuntu que ao atualizar de uma versão para outra um pacote x dependa do pacote y ser atualizado primeiro, porém o pacote y também necessita que o pacote x já esteja atualizado, esse problema geralmente é resolvido indo ao /var/cache/apt/archives e executando um dpkg -i --force-all, porém para um usuário normal isso é algo muito complexo e para os que sabem da solução ainda é algo chato de resolver, pois muitas vezes isso acontece com diversos pacotes.
Durante essa semana de testes e mais de 30 reinstalações e atualizações completas com configurações diferentes cheguei a uma alternativa que se mostrou bastante útil, porém seria bom executar mais testes e ver como fica o seu uso no dia a dia.
Como utilizar a alteração:
Lembre que essa alteração irá modificar a configuração de todo o apt-get, isso reflete na instalação, remoção e atualização de pacotes não apenas no uso direto do apt-get, mas também pelo synaptic, muon, central de programas e todas as interfaces gráficas que utilizem o apt-get.
Essa alteração pode ser feita instalando o seguinte pacote: http://biglinux.c3sl.ufpr.br/packages/p ... x1_all.deb
O pacote informado pode ser instalado em qualquer versão do Debian, Ubuntu ou seus derivados, pois a única coisa que faz é adicionar o arquivo /etc/apt/apt.conf.d/18bigtweaks que adiciona configurações ao apt-get, com as linhas que irei comentar a seguir.
Código: Selecionar todos
Acquire::http::timeout "10";
APT::Immediate-Configure "false";
DPkg::StopOnError "false";
T::Cache-Limit 2200000000;
APT { Get { Fix-Broken "true"; }; };
DPkg { Options {"--force-all";}; };
DPkg { Options {"--abort-after=9999999";}; };
DPkg::Post-Invoke {"dpkg --abort-after=9999999 --configure -a";}
- Segunda linha, desativa a configuração de configuração imediata, permite que o apt-get primeiro extraia todos os arquivos e depois faça as configurações.
- Terceira linha, normalmente quando o dpkg encontra problemas para instalar um pacote o processo do apt-get é interrompido, com essa linha o processo de atualização continua mesmo se ocorrerem erros.
- Quarta linha, um problema que ocorre algumas vezes ao ter muitos repositórios configurados, ultrapassar o limite de cache padrão, com esse novo valor provavelmente esse problema nunca mais irá acontecer.
- Quinta linha, tentar corrigir automaticamente pacotes quebrados.
- Sexta linha, força o dpkg a ignorar erros, pode parecer um exagero, mas essa configuração é válida apenas quando o dpkg é chamado pelo apt-get, o apt-get já faz uma série de checagens antes da instalação ou atualização ser executada, dessa forma ignorar os erros apenas do dpkg me pareceu trazer mais soluções do que problemas.
- Sétima linha, junto com a terceira linha evita de toda forma que a atualização seja interrompida caso alguns pacotes entrem em conflito.
- Oitava linha, ao final da atualização é executado o comando "dpkg --configure -a" que é uma solução genérica para a maior parte dos problemas que ocorrem no dpkg.
Quem puder testar e deixar informações sobre melhorias ou problemas relacionados à alteração da configuração estará ajudando principalmente para estabelecer uma configuração padrão para a futura distribuição do projeto União Livre.