Criando uma distribuição com suporte a repositório de pacotes no Yocto Project
- por Sergio Prado
Criar uma distribuição Linux com suporte a repositório de pacotes oferece algumas vantagens, dentre elas a facilidade de atualização e testes de aplicações durante o desenvolvimento e a possibilidade da implementação de um mecanismo de upgrade do sistema baseado em pacotes.
Para construir uma distribuição com esta funcionalidade, é necessário:
- Criar e manter um repositório de pacotes em um servidor remoto.
- Instalar na plataforma-alvo (target) a base de dados de pacotes e uma ferramenta de gerenciamento de pacotes.
Uma das grandes vantagens do Yocto Project e de seu sistema de build Poky perante outras ferramentas é a facilidade na implementação desta funcionalidade.
CONFIGURANDO O SISTEMA DE BUILD
Para configurar o sistema de build para gerar uma distribuição com suporte à gerenciamento de pacotes, as alterações podem ser realizadas no conf/local.conf ou no arquivo de configuração da distribuição.
O primeiro passo é selecionar o tipo de pacote que deseja-se trabalhar através da variável PACKAGE_CLASSES. Dentre as opções disponíveis, temos package_rpm (RPM), package_deb (DEB) e package_ipk (IPK). Por padrão, são habilitados pacotes do tipo RPM:
PACKAGE_CLASSES ?= "package_rpm" |
Habilite também a feature de imagem package-management. Esta feature irá automaticamente habilitar a instalação da base de dados de pacotes e da ferramenta de gerencimento de pacotes no target.
EXTRA_IMAGE_FEATURES += "package-management" |
Por último, a URL do servidor de pacotes pode ser configurada na variável PACKAGE_FEED_URIS:
PACKAGE_FEED_URIS = "http://myserver.com/packages/" |
E então é só gerar a imagem.
CONFIGURANDO O SERVIDOR
Para configurar o servidor de pacotes, primeiro instale um servidor Web no host.
Depois copie para o diretório HOME do servidor WEB os pacotes gerados pelo sistema de build, disponíveis em tmp/deploy/<pkgtype>. Exemplo:
$ sudo cp -av tmp/deploy/rpm /var/www/packages/ |
Agora é só testar o acesso ao repositório no target.
TESTANDO O REPOSITÓRIO
Para pacotes do tipo RPM, a ferramenta de gerenciamento de pacotes Smart é instalada no target.
Você pode verificar a lista dos canais de atualização de pacotes com o comando abaixo:
# smart channel --show |
E a lista de pacotes instalados pode ser exibida com o parâmetro query:
# smart query --installed |
INSTALANDO UM NOVO PACOTE
Caso você processe uma receita que resulte em um novo pacote no repositório de pacotes, você pode atualizar o índice de pacotes processando a receita package-index:
$ bitbake package-index |
No target, é necessário atualizar a base de dados para ter acesso ao pacote adicionado no repositório:
# smart update |
E então você pode exibir informações do pacote e instalá-lo:
# smart info <package> # smart install <package> |
MUDANDO A VERSÃO DE UM PACOTE
A versão de um pacote é definida através das variáveis PV, PE e PR.
Sempre que a versão mudar, você pode atualizar o pacote conforme abaixo:
$ smart update $ smart upgrade <package> |
Uma lista das opções disponíveis na ferramenta smart está documentada no guia de usuário da aplicação.
Um abraço,
Sergio Prado