Criando uma distribuição com suporte a repositório de pacotes no Yocto Project

- por Sergio Prado

Categorias: Yocto Project Tags: , ,

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:

  1. Criar e manter um repositório de pacotes em um servidor remoto.
  2. 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

  • Rodrigo Zimmermann

    Ah mas é muito mais fácil pegar o Ubuntu e trocar o nome!

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.