Search

Monday, July 19, 2010

yumpkgs



Bom, tudo começou a um tempo atrás quando fiquei sem acesso a internet em casa, só podia acessar através de cybercafes/lanhouses, logo me deparei com um problema.

Como é que eu vou atualizar meu sistema se nos cybercafes só encontro Windows?

Passei um bom tempo dia a dia gastando uns 10 min procurando por soluções, encontrei algumas dicas mas nada que fosse satisfatório.

Foi então que o tempo passou e fui juntando uma série de pequenos scripts (bem simplezinhos), até que o tempo passou e vi que algumas pessoas poderiam usufruir da idéia.

Estes dias estava procurando por alguma solução especifica à distros mais populares, assim encontrei um programa bem legal que evitou que eu reinventasse a roda, o keryx.Este aplicativo trabalha com repositórios APT, não cheguei a testa-lo em prática pois não uso muito distros debian based (no entanto sou usuário de Ubuntu casual e acho excepcional), mas pude perceber que o aplicativo é de qualidade.

Entretanto logo mais tarde notei um problema, segundo LSB o gerenciador de pacotes padrão é o RPM, quando fui procurar na internet o mesmo tipo de programa não encontrei, foi ai que decidi criar em algumas horas um pequeno exemplo de como isso poderia ser solucionado.

Basicamente o que precisamos é...

  1. Analisar as dependências do pacote (isso nos da arquivos como bibliotecas)
  2. Através dos arquivos procurar quais pacotes resolvem estas dependências
  3. Guardar o nome do pacote em um arquivo
  4. Fazer o procedimento 1 ao 3 até que todas as dependências das dependências estejam resolvidas
Para fazer isto precisamos dos "metadados" dos pacotes, pela primeira vez quando fui fazer os scripts notei que precisamos somente do primary.xml.Neste arquivo XML precisamos de poucas "tags".No fim resolvi deixar de lado o XML e otimizar o arquivo para que eu pudesse ao menos apresentar algo um pouco viável (é, ficou lento mas é ilustração rsrs) de ser feito em AWK!

Bom, não vou entrar em maiores detalhes, qualquer coisa dêem uma olhada no código fonte.


No comments:

Post a Comment