Gary Richmond
12/01/2009
Six ways to speed up Yum on Fedora
Autor original: Gary Richmond
Publicado originalmente no: freesoftwaremagazine.com
Tradução: Roberto Bechtlufft
Já faz alguns anos que vez sim, vez não eu uso o Fedora (desde os tempos do Core), e descontando a atitude parcimoniosa dele com relação a codecs, a coisa que mais acaba comigo é ver o Yum instalando um software. A velocidade dele é comparável à de um rio de melado no pólo Norte. Enquanto o Yum põe a mesa e separa os talheres, o apt-get já comeu e foi para casa dormir. Sem falar que o programa é prolixo demais, como você vai notar depois de usá-lo por um tempo. Existe algum jeito de arrancar esse gerenciador de pacotes do sofá e mandá-lo para uma bela malhação na academia?
A culpa não é do hardware
Você deve estar pensando: "aposto que você está rodando o Fedora em um computador do tempo em que os dinossauros dominavam a Terra, certo?" Bem, sim e não. Eu rodava o Fedora Core 5 nessa máquina arcaica com um processador Celeron meio manco de 400 MHz, então você talvez não esteja de todo errado, mas não notei grandes melhorias na velocidade quando instalei versões mais recentes do Fedora em desktops e laptops mais poderosos, com processadores na faixa dos 2.600 MHz. Toda vez que vinham com esse hype eu acreditava. "O Yum está mais rápido do que nunca", diziam eles. Vai lá, instala o Fedora e confere! E eu conferia. Mas ao invés de um tigre enfurecido, o que eu encontrava era uma baleia encalhada. Problemas com o hardware? Acho que não. Afinal, há anos que uso distros com o apt-get em computadores de velocidades diferentes, mas ele sempre cumpre o que promete, enquanto o Yum parecia ferir o código de defesa do consumidor. Em termos de velocidade, ainda não vi nada que se compare ao apt-get. Então, o que fazer para colocar o Yum no páreo e não mandá-lo para um país distante montado em um pangaré?
Yum pela linha de comando?
Estou sempre à caça de interfaces para ferramentas de linha de comando, especialmente para gerenciadores de pacotes. Sacrifica-se um pouco de controle e da capacidade de resolver problemas, mas ganha-se facilidade de uso e uma relativa transparência — e com interfaces como o Synaptic, você não vai se decepcionar. Pouco se perde em termos de velocidade. E é assim que deve ser. Já o Yum é outra história. Instale e inicie o Kyum ou o Yumex e você terá duas interfaces bonitas e cheias de recursos para o Yum, só que as duas reduzem o usuário a um estado de paralisia catatônica com sua lentidão absurda, especialmente no caso do Yumex. Eu sei que verificar transações e chaves é importante, mas parece que essas interfaces conseguem deixar até isso lento. Mesmo o Packagekit, a nova interface do Yum desde o Fedora 9, não é nenhum maratonista. Sim, para usar o Yum pela linha de comando você vai ter que decorar algumas coisas, mas acredite, depois que você estiver prestes a perder a vontade de viver enquanto o Kyum faz uma instalação simples (no caso do Yumex é pior ainda), vai achar que memorizar alguns comandos é um pequeno preço a pagar para não ter ataques de fúria nas instalações.
Que tal esperar menos?
Bom, na verdade você vai continuar tendo que esperar um pouco. Se iniciar o Yumex pelo menu de aplicativos ou pelo ícone do desktop com as configurações padrão, vai precisar de um livro para passar o tempo enquanto ele trabalha. A minha versão do Yumex, pelo visto, não tem mais um recurso que tinha antes: a capacidade de usar perfis, como no Firefox. Dentre outras coisas, isso permitia ao usuário desativar a atualização dos metadados e usar o cache local. Pelo visto, a opção não existe mais. Tentei usá-la mas o resultado foi a interface normal, então vamos precisar de outro jeito de ganhar velocidade.
Para acelerar o Yum vamos ter que editar seu arquivo de configuração. Se você abrir esse arquivo em seu editor de texto favorito, vai ver que há um tempo de validade padrão para a atualização dos metadados. Esse tempo era de trinta minutos, mas agora aumentou para noventa. Nem o mais dedicado ou prolífico instalador de software precisa estar tão atualizado; aumentar bastante esse tempo deve dar uma boa ajuda na lentidão. Defina um valor condizente com seus hábitos e veja como a velocidade aumenta. Se preferir, defina uma padrão realmente alto, equivalente a uma atualização por semana. Se você não gosta de arquivos de configuração, a maneira rápida de resolver isso é digitar yum -C install <seu aplicativo>. O C faz o Yum ignorar a atualização dos cabeçalhos, rodando com o que estiver no cache. Fazendo isso, mais cedo ou mais tarde você vai querer sincronizar o cache local de metadados com os repositórios. Para isso, digite yum makecache periodicamente para sincronizar com as atualizações do Fedora. Mas em última análise, parece que o verdadeiro problema do Yum está em sua lentidão para analisar XML e na transformação de strings de C em strings do Python. Hackear a configuração dos metadados é provavelmente a melhor coisas que você pode fazer para acelerar o Yum, mas há outras possibilidades. Elas não são tao poderosas, mas somadas podem ajudar o Yum a pisar no acelerador.
Espelho, espelho meu, existe alguém mais rápido do que eu?
Parece haver uma idéia de que mirrors locais de repositórios são mais rápidos, mas isso nem sempre se aplica, como qualquer um que já tenha tentado baixar uma ISO de GNU/Linux em mirrors diferentes pode atestar. Com a próxima dica você não vai ter que adivinhar qual é o mirror mais rápido. Que entrem em cena os plugins do Yum.
É simples: basta digitar o comando a seguir em um console: yum install yum-fastestmirror. Só isso. De agora em diante o Yum vai escolher o mirror mais rápido sempre que for instalar um software. Se ainda quiser excluir alguns domínios para melhorar mais as coisas, abra o arquivo /etc/yum/plugin conf.d/fastest mirror.conf como root em seu editor de texto favorito e adicione a linha exclude=.ee/ .dk para excluir sites da Estônia e da Dinamarca, por exemplo (dá para obter uma lista de abreviações dos domínios de países na Wikipédia). Por padrão, o fastestmirror do Yum refaz os cálculos a cada dez dias, mas se você instala muito software vai querer forçar a verificação com um rm /var/cache/yum/timedhosts.text para obter os mirrors mais rápidos do momento.
Chame a Força Delta!
A maioria dos leitores deve conhecer os backups diferenciais e incrementais. O princípio é conhecido e consolidado, e pode ser aplicado na área de gerenciamento de pacotes. Normalmente, quando há uma atualização de software disponível, o Yum baixa e instala a atualização para você, e ela pode ser muito parecida com a versão anterior. Ao atualizar programas grandes, como o OpenOffice.org, você com certeza vai gostar de poder reduzir o peso na banda (há uma grande diferença entre 8 Kb e 120 MB). Os Delta RPMs cuidam disso para você. Com eles, o Yum baixa apenas as diferenças (delta=diferença) entre os pacotes, e não o pacote inteiro.
Esse recurso extremamente útil pode ser ativado com a instalação do plugin presto (yum install yum-presto). O Fedora pretende incluir o recurso por padrão no Fedora 11, mas os Delta RPMs já devem estar disponíveis nos repositórios do Yum. Eu estou usando já faz algum tempo.
Verifique, ignore e exclua antes de atualizar
Caso não use as dicas anteriores (ou mesmo usando), uma maneira de acelerar o Yum é simular uma atualização com um yum check-update, identificar as atualizações grandes que deseja excluir e seguir com a opção exclude: yum update --exclude=openoffice --exclude=firefox. Você pode adicionar quantos pacotes quiser. Dica: se também quiser excluir pacotes com nomes semelhantes, adicione um asterisco: yum update --exclude=openoffice* --exclude=firefox*. Somado aos Delta RPMs, isso poupa espaço e, no caso do Firefox, garante que os addons e plugins não vão parar de funcionar. Para fechar, você pode conseguir um leve aumento na velocidade mandando o Yum ignorar dependências quebradas. Basta um simples yum install yum -skip-broken. Após essa instalação, o Yum passará a ignorar pacotes com problemas de dependências.
Instale um gerenciador de pacotes melhor (?)
Sem dúvida, o Yum melhorou substancialmente ao longo dos anos, mas não é o único gerenciador de pacotes que existe. Portar aplicativos entre distros é um hobby popular na Unixlândia, e os gerenciadores de pacotes não são uma exceção. Dois deles se destacam: o Apt4Rpm e o Smart. E há ports para o Fedora. Se a velocidade e a resolução de dependências estão acabando com sua festa no Fedora, experimente-os.
Apt4rpm
O suporte do Apt4rpm ao Yum foi incluído em maio de 2004 (versão 0.68.2), mas são raros os binários para versões recentes do Fedora. Se não encontrá-lo nos seus repositórios, baixe uma cópia no Sourceforge. O inferno de dependências ainda vive: ele é como uma hidra, e uma de suas cabeças está sempre pronta a atacar. Nessas horas em que o Yum falha, o Apt4rpm pode tirar você do inferno. Segundo uma piada geek, o Apt é o que o Yum quer ser quando crescer.
Smart
Os usuários do Debian gostam de caçoar dos devotos do Fedora, chamando-os de usuários de calças curtas do apt. Os desenvolvedores do gerenciador de pacotes Smart não deixam a peteca cair, e dizem que o algoritmo que move o Smart faz o apt-get parecer uma menininha. Pela minha experiência pessoal, posso atestar que em momentos nos quais o apt-get falhou o Smart deu conta do recado. Caso não o encontre nos repositórios do Fedora, você pode baixar binários para vários distros na homepage do Smart (além dos tradicionais pacotes tar compactados). Só que os binários estão um tanto defasados, então dê uma passada no RPMpbone e baixe um binário para o Fedora. Sua experiência com o Apt4rpm e com o Smart pode ser diferente da minha, e misturar gerenciadores de pacotes é tão perigoso quanto misturar bebidas, então cuidado para não tropeçar! Fique atento.
Conclusão
Dada a natureza do GNU/Linux, é certo que você terá vários tipos de problemas, mas para cada um deles algum desenvolvedor tem uma solução, e embora o Yum talvez nunca possa competir em velocidade com o apt-get, essas dicas podem ao menos levar o Yum ao pódio. Enquanto isso, vou manter o apt-get na manga em uma distro baseada no Debian.
Créditos a Gary Richmond - freesoftwaremagazine.com
Tradução por Roberto Bechtlufft <roberto at bechtranslations.com>