Presto! Atualize seu sistema num passe de mágica.

by LonelySpooky

De todas as features prometidas para o Fedora 11 a que mais aguardo é o "Presto"1. Apesar do nome meio bobnho a adição do presto como um padrão no Fedora vai beneficiar a todos os usuários com as maravilhas do Delta RPM - Enfim, vou poder parar de babar em cima do openSuse, que já trazia o recurso há algum tempo.

O Delta RPM foi uma grande sacada dos engenheiros da Novell, eles pensaram: "Ei! Por que baixar o RPM inteiro toda vez que acontece um update? E se fosse possível baixar só a parte que teve update e juntá-la com o software a ser atualizado?". Pois funcionou. Um Delta RPM pode gerar economias de mais de 90% em downloads (minha conexão de 300 Kb agradece).

Os usuários do Fedora, na verdade, já podem testar o Delta RPM há algum tempo (desde o Fedora 7 se não me engano), mas essa feature sempre ficou meio "de lado", como um tipo de recurso à moda "amanhã eu testo".

A desvantagem de usar Delta RPM agora é que a produção em massa de pacotes ainda não começou e quase tudo estava limitado aos esforços de Jonathan Dieter que mantinha os repositórios de Deltas. Isso significa que os updates em Delta podem demorar um pouco, mas sempre chegam.

Com aproximadamente 200 usuários usando o Presto atualmente os resultados não poderiam ser mais positivos. Usei durante mais de um ano (meio preocupado, devo confessar), mas tudo correu sem problemas.

Com a chegada do Presto, um desafio de infraestrutura começou no Projeto Fedora: fazer com que cada RPM tenha sua contraparte Delta da forma mais elegante possível. Para entender melhor, saiba que o Projeto Fedora usa dois sistemas para gerar seus pacotes e organizar tudo: Koji é o responsável pela construção de pacotes em todas as arquiteturas e Bodhi, que é o responsável por testar cada pacote e dar-lhes destino para os repositórios certos. Na fase atual, a equipe de infra está hackeando o Bodhi para que ele gere os deltas e estão lidando com problemas do tipo "Onde guardar os deltas?" ou "Como gerar os deltas? Na hora exata em que o RPM é feito ou fazer tudo de uma vez só depois?". Além disso surgiu um problema de lógica. Vamos pensar o seguinte:

  • Saiu o software chamado generic-0.1;
  • Com o passar do tempo ele sofre três atualizações: generic-0.2, generic-0.3 e generic-0.4
  • Você, caro leitor, que é um cara antenado a gosta sempre de estar "na crista da onda", vai ter seu software sempre atualizado, portanto, estará usando o generic-0.4
  • Manoel, que não gosta de atualizar ou que não atualiza frequentemente ainda está no generic-0.2, mas decidiu atualizar agora, direto do 0.2 pro 0.4.

Quantos Delta RPMs são precisos gerar para garantir que seja possível atualizar de todas as versões para uma mais atual (não necessariamente A mais atual) sem excluir ninguém?

Entenda-se nessa questão o seguinte: é preciso garantir que existam Delta RPMs para todas as possibilidades de atualização, logo, existe necessidade de garantir que seja possível atualizar de generic-0.1 para generic-0.2, de generic-0.1 para generic-0.3, de generic-0.1 para generic-0.4, de generic-0.2 para generic-0.3, de generic-0.2 para generic-0.4 e de generic-0.3 para generic-0.4 (sem excluir nenhuma possibilidade).

Se achou tudo isso muito complicado, basta dizer que para cada versão de um software, se ele tiver n versões será preciso gerar (n^2-n)/2 Delta RPMs. Ou seja: se o Firefox tiver 5 versões nos repositórios vamos precisar de(5^2 - 5)/2 = 10 Delta RPMs para ele.

A chance de tudo estar pronto para o Fedora 11 é grande (95% até o momento) e eu estou na torcida, acompanhando cada passo como se fosse o novo capítulo daquela novela mexicana favorita. =) Me deem um desconto, conexão de 300 Kb...

Quer testar o Delta RPM no seu fedora?

Instale o plug-in:

# yum install yum-presto

Habilite o repositório de Delta RPMs:

No Fedora 10 edite o arquivo /etc/yum.repos.d/fedora-updates.repo. Comente o mirrorlist antigo e adicione este novo:

mirrorlist=http://presto-mirrors.anmar.eu.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch

No Fedora 9 edite o arquivo /etc/yum.repos.d/fedora-updates-newkey.repo. Comente o mirrorlist antigo e adicione este novo:

mirrorlist=http://presto-mirrors.anmar.eu.org/mirrorlist?repo=updates-released-f$releasever.newkey&arch=$basearch
----------------------------------

  1. http://fedoraproject.org/wiki/Releases/FeaturePresto

Popularity: 17% [?]

  • Share/Bookmark

Posts relacionados:

  1. Delta RPMs fora do Fedora 11
  2. Primeiro contato com o Fedora 11 final
  3. Cinco simples passos para fazer seu RPM

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

{ 1 trackback }

Delta RPMs fora do Fedora 11 | Lonely Spooky's Blog
5 de maio de 2009 às 9:58

{ 8 comments… read them below or add one }

1 Fabrício Godoy 24 de fevereiro de 2009 às 16:31

Eu acho que a solu­ção para o Manoel seria o yum bai­xar auto­ma­ti­ca­mente os del­tas 0.3 e 0.4 e aplicá-las na ordem.

Responder

2 Rafael Gomes 24 de fevereiro de 2009 às 22:37

Real­mente é fas­ci­nante… Estou atu­a­li­zando meu Fedora agora e assim que fina­li­zar irei con­fi­gu­rar meu Delta RPM.

Eu ja tinha ouvido falar, mas nunca parei para con­fi­gu­rar, achei que ainda era muito ins­tá­vel e minha maquina de teste está com pro­ble­mas. sendo assim não que­ria fazer tes­tes em meu note de tra­ba­lho, mas irei tes­tar nele mesmo.

Obri­gado

Responder

3 Mythus 25 de fevereiro de 2009 às 10:56

Muito inte­res­sante a notí­cia. Em ultima ratio, o delta rpm é a sin­gu­la­ri­za­ção do con­teúdo dos rpms, não? Paco­tes de con­teúdo único.

Não ficou claro no seu exem­plo a frase: “Ape­nas no nosso exem­plo, 9 del­tas seriam neces­sá­rios”, ainda mais quando esta­mos tendo em mente ape­nas 4 ver­sões do mesmo pacote.

Para mim, sem­pre achei que os arqui­vos .conf deve­riam ser guar­da­dos em paco­tes iso­la­dos. Esses arqui­vos nunca ou quase nunca mudam. Nem duvi­da­ria que um generic-0.2, generic-0.3, generic-0.4, generic-1.1 e generic-1.2, tives­sem exa­ta­mente o mesmo /etc/generic.conf.

Responder

4 LonelySpooky 25 de fevereiro de 2009 às 12:44

Salve, Mitu­lino.
O delta rpm con­tém, na ver­dade, um “diff” entre o pacote antigo e o pacote novo. Quando ins­ta­lado, o Delta se “aplica” ao soft­ware exis­tente. Um Delta RPM é, sim­pli­fi­cando muito, um tipo de patch.

Responder

5 LonelySpooky 25 de fevereiro de 2009 às 16:22

Adi­ci­o­nei alguma mate­má­tica para maior enten­di­mento. Espero que me perdoem…

Responder

6 Mayck Xavier 27 de fevereiro de 2009 às 2:06

Cara###!!! Eu te disse que era assim que o Fore­sight atu­a­li­zava seus paco­tes e você falava “Mas aí tem que recom­pi­lar! Mas aí tem que blá-blá-blá!” Eu vou te bater! auhauhaua

Responder

7 LonelySpooky 3 de março de 2009 às 8:52

Hahaha Eu nem lem­brava disso. =P

Responder

8 Elder Marco 3 de março de 2009 às 20:36

Putz, mas se é dessa maneira, cres­cendo com n^2, eu acho que dará um tra­ba­lho danado! Mesmo sendo uma boa coisa para pes­soas com cone­xão lenta — embora isso não resolva o pro­blema de pes­soas com cone­xão dis­cada e julgo que deve­ria ter algo tam­bém no Fedora —, isso vale mesmo a pena dessa maneira, quer dizer, o quão viá­vel é isso?

Se deu certo antes, pode ser que dê agora.. :-)

Responder

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre user="" computer="" escaped="">

Previous post:

Next post: