Possível melhoria para atualização do sistema.

Iniciado por BIGBRUNO, 25 de Outubro de 2012, 18:03

tópico anterior - próximo tópico

BIGBRUNO

Olá pessoal, passei alguns dias fazendo testes no sistema de atualização do Ubuntu e do Big, cheguei a algo que acredito ser interessante para os participantes desse fórum também, apesar de ser uma solução testada por poucos, nos testes que fiz foi algo surpreendentemente útil, quem tiver disposição de testar, aprimorar e relatar como foram os testes será bastante útil.

Segue o post que fiz no fórum do BigLinux, em: http://biglinux.com.br/forum/viewtopic.php?f=25&t=10721
________________


Melhorias no sistema de atualização:

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/precise/main/big-apt-get-tweaks_1.0.0-0biglinux1_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.

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";}


- A primeira linha reduz o timeout para 10 segundos, quando se utiliza repositórios complementares, algumas vezes eles saem do ar e o apt-get update fica esperando por muito tempo, um servidor que não responder em 10 segundos é por que está com problemas e não vejo motivos para aguardar mais que isso.

- 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.