43
Desenvolvendo uma distribuição GNU/Linux – Projeto Fedora Allisson Azevedo II Encontro Comunicação Digital http://allisson.eti.br

Desenvolvendo uma distribuição Linux - Projeto Fedora

Embed Size (px)

DESCRIPTION

Os slides mostram como ocorre a construção de um novo release da distribuição Fedora GNU/Linux. Slides utilizados no II Encontro de Comunicação Digital.

Citation preview

Page 1: Desenvolvendo uma distribuição Linux - Projeto Fedora

Desenvolvendo uma distribuição GNU/Linux – Projeto Fedora

Allisson AzevedoII Encontro Comunicação Digital

http://allisson.eti.br

Page 2: Desenvolvendo uma distribuição Linux - Projeto Fedora

Histórico

Page 3: Desenvolvendo uma distribuição Linux - Projeto Fedora

Fedora Ontem (2003)

● Fedora Core 1– Red Hat Linux (9.0.93)

– Desenvolvimento aberto

● Repositório Core– Engenheiros da Redhat

● Repositório Extras– Comunidade

Page 4: Desenvolvendo uma distribuição Linux - Projeto Fedora

Fedora Ontem (2007)

● Fedora 7● União dos repositórios core + extras

– 100% do código disponível via cvs

– http://cvs.fedoraproject.org/

● Implementação de novas ferramentas (new toolbox)– Koji

– Bodhi

– PackageDB

– Pungi

Page 5: Desenvolvendo uma distribuição Linux - Projeto Fedora

Fedora Hoje

● Fedora 9● Consolidação das ferramentas criadas para

o Fedora 7● Novas ferramentas

– MirrorManager

– Transifex

● Maior participação da comunidade– Comunidade é maioria no FESCo (Fedora

Engineering Steering Committee)

Page 6: Desenvolvendo uma distribuição Linux - Projeto Fedora

Ferramentas

Page 7: Desenvolvendo uma distribuição Linux - Projeto Fedora

RPM

● Red Hat Package Manager● Base da distribuição Fedora● Bom nível de estabilidade

– Versão 4.0 (2001)

– Versão 4.4 (2007)

Page 8: Desenvolvendo uma distribuição Linux - Projeto Fedora

Yum

● API para trabalhar com pacotes RPM● Instalação remota de pacotes● Resolução de dependências● Constante evolução● Python com alguns módulos em C

Page 9: Desenvolvendo uma distribuição Linux - Projeto Fedora

Koji

● Agenda a construção de pacotes para várias arquiteturas:– I386

– X86_64

– PPC

– PPC64

● Construção de pacotes em ambientes chroot separados (mockbuild)

Page 10: Desenvolvendo uma distribuição Linux - Projeto Fedora

Koji (Cont)

● Scratch builds● API

– Web: http://koji.fedoraproject.org/koji

– Linha de comando

● Criado para uso interno na Red Hat ● Liberado como software livre para uso no

Fedora● Python, Cheetah, Javascript, XML-RPC● https://fedorahosted.org/koji/

Page 11: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 12: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 13: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 14: Desenvolvendo uma distribuição Linux - Projeto Fedora

Pungi

● Produção de spins● Arquivo kickstart (fedora.ks)

– Resolução de depêndencias

– Spins variados

● Anaconda● Python● https://fedorahosted.org/pungi/

Page 15: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 16: Desenvolvendo uma distribuição Linux - Projeto Fedora

Bodhi

● Atualizações de pacotes● Filtro antes da publicação no repositório

fedora-updates● Verificação do pacote

– Interação com Koji

– Suíte de testes automáticos

Page 17: Desenvolvendo uma distribuição Linux - Projeto Fedora

Bodhi (Cont)

● Permite o teste do pacote por outros usuários– Comentários

– Karma

● API– Web: https://admin.fedoraproject.org/updates

– Linha de comando

● Python (TurboGears)– https://fedorahosted.org/bodhi/

Page 18: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 19: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 20: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 21: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 22: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 23: Desenvolvendo uma distribuição Linux - Projeto Fedora

PackageDB

● Alteração de permissões nos pacotes– Mantenedor (ownership)

– Co-Mantenedores (co-ownerships)

● Interface web– https://admin.fedoraproject.org/pkgdb

● Integração com outras ferramentas– Koji

– Bugzilla

– CVS

Page 24: Desenvolvendo uma distribuição Linux - Projeto Fedora

PackageDB (Cont)

● Python (TurboGears)● https://fedorahosted.org/packagedb/

Page 25: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 26: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 27: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 28: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 29: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 30: Desenvolvendo uma distribuição Linux - Projeto Fedora

MirrorManager

● Sincronizar espelhos públicos e privados ao redor do mundo

● MirrorManager Database– Lista de espelhos sempre atualizada

● Python (TurboGears)● https://fedorahosted.org/mirrormanager/

Page 31: Desenvolvendo uma distribuição Linux - Projeto Fedora

Construindo um novo release

Page 32: Desenvolvendo uma distribuição Linux - Projeto Fedora

1. Definir Novos Recursos

Page 33: Desenvolvendo uma distribuição Linux - Projeto Fedora

Novos Recursos

● Membros fazem propostas de novos recursos

● Votação pelo FESCo (Fedora Engineering Steering Committee)

● Os recursos aprovados vão ditar as novidades do próximo release

Page 34: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 35: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 36: Desenvolvendo uma distribuição Linux - Projeto Fedora
Page 37: Desenvolvendo uma distribuição Linux - Projeto Fedora

2. Construir os pacotes

Page 38: Desenvolvendo uma distribuição Linux - Projeto Fedora

Construção de Pacotes

● CVS– Código fonte

– Arquivo .spec

– Possíveis patches

● Koji– Construção com base nos arquivos do CVS

– Necessário compilar corretamente nas arquiteturas propostas

– Inclusão automática no repositório de desenvolvimento (rawhide)

Page 39: Desenvolvendo uma distribuição Linux - Projeto Fedora

3. Construir os Spins

Page 40: Desenvolvendo uma distribuição Linux - Projeto Fedora

Construir os Spins

● Pungi● ISOS

– DVD

– LiveCD

Page 41: Desenvolvendo uma distribuição Linux - Projeto Fedora

4. Sincronizar os Espelhos

Page 42: Desenvolvendo uma distribuição Linux - Projeto Fedora

Sincronizar os Espelhos

● MirrorManager– Sincronizar mais 200 espelhos espalhados pelo

mundo

Page 43: Desenvolvendo uma distribuição Linux - Projeto Fedora

Perguntas?