Estrutura e Funcionamento de um Ebuild no Gentoo Linux

Informações básicas para quem pretende entender um pouco sobre ebuilds.

[ Hits: 161 ]

Por: Xerxes em 23/03/2026


Introdução



O gerenciador de pacotes do sistema Gentoo, denominado Portage, realiza a instalação de softwares através da compilação do código-fonte. O arquivo que fornece as instruções para este procedimento é o ebuild. O ebuild é um script em formato texto, baseado na linguagem Bash, que contém variáveis e funções predefinidas. Ele padroniza o download, a preparação, a compilação e a integração de um programa ao sistema operacional.

Para compreender a estrutura, analisaremos o ebuild do software DOOM Retro (doomretro-5.8.2.ebuild) que disponibilizo no meu overlay (https://github.com/xerxeslins/xerxes-overlay).

Cabeçalho e Metadados

O arquivo inicia com a identificação técnica do sistema de construção e metadados de catálogo.

EAPI=8
inherit cmake
DESCRIPTION="The dark, gritty, thoroughly refined, and decidedly retro DOOM source port"
HOMEPAGE="https://www.doomretro.com/"

  • EAPI=8: A sigla significa Ebuild Application Programming Interface. Define a versão das regras internas de processamento que o Portage deve utilizar ao ler o arquivo.
  • inherit: Esta instrução carrega coleções de funções embutidas, chamadas eclasses. A eclass cmake fornece comandos padronizados para compilar softwares que utilizam o sistema CMake, eliminando a necessidade de redigir etapas manuais de configuração.
  • DESCRIPTION e HOMEPAGE: Fornecem o texto informativo sobre o pacote e o endereço do desenvolvedor. O Portage utiliza estes dados para exibições em ferramentas de busca de pacotes (emerge --search).

Aquisição e Controle de Versão

Esta seção orienta o Portage sobre o local de obtenção dos arquivos e as regras de versionamento.

SRC_URI="https://github.com/bradharding/doomretro/archive/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"

  • SRC_URI: Informa a URL de download do código-fonte. O sistema utiliza variáveis dinâmicas: ${PV} (Package Version) representa o número da versão extraído do nome do arquivo (5.8.2) e ${P} (Package) representa o nome do software associado à versão. Isso automatiza a reutilização do script em atualizações futuras.
  • LICENSE: Declara a licença de software que rege o uso do código.
  • SLOT: Controla o mecanismo de coexistência de instalações. O valor 0 instrui o Portage a sobrescrever versões anteriores do mesmo pacote. Valores numéricos distintos permitem a instalação de múltiplas versões do mesmo software simultaneamente em diretórios isolados.
  • KEYWORDS: Define a compatibilidade com a arquitetura do processador. O símbolo til (~) precedendo a arquitetura (como ~amd64) categoriza a versão como testing (em fase de testes para uso geral). A remoção do til categoriza o pacote como estável.

Gerenciamento de Dependências

A compilação exige a presença prévia de componentes no sistema.

DEPEND="
    media-libs/libsdl2[sound,video,opengl]
    media-libs/sdl2-image[png,jpeg]
    media-libs/sdl2-mixer[midi,mp3,vorbis,wav]
"

RDEPEND="${DEPEND}"
  • DEPEND: Enumera os pacotes e bibliotecas que o compilador necessita para processar o código-fonte.
  • USE flags em dependências: Os termos entre colchetes impõem condicionais de recursos. A linha media-libs/libsdl2[sound,video,opengl] força o Portage a verificar o estado de instalação da biblioteca libsdl2. Se a biblioteca estiver instalada, porém compilada sem suporte a opengl, o gerenciador de pacotes interrompe a sequência do DOOM Retro, recompila a libsdl2 com o recurso exigido, e então retoma o processo.
  • RDEPEND: Enumera as dependências de execução (runtime). São os pacotes necessários para o funcionamento do software após a instalação. Na estrutura demonstrada, a variável herda os mesmos componentes da etapa de compilação.

Fases de Execução

Quando o comando de instalação é acionado (emerge doomretro), o Portage fraciona o processo em etapas sequenciais padronizadas.

  1. Fase de Setup (pkg_setup): O sistema executa verificações de segurança, integridade de ambiente e permissões de conta de usuário.
  2. Fase de Unpack (src_unpack): O Portage executa o download do arquivo compactado especificado na variável SRC_URI e extrai o conteúdo em um diretório de trabalho isolado, localizado em /var/tmp/portage/.
  3. Fase de Prepare (src_prepare): Aplica modificações diretas no código-fonte, caso o mantenedor do ebuild inclua arquivos de correção (patches).
  4. Fase de Configure (src_configure): Parametriza as variáveis de ambiente e prepara as instruções de compilação.
  5. Fase de Compile (src_compile): Aciona o compilador do sistema, que converte o código-fonte textual em arquivos binários legíveis pela máquina.
  6. Fase de Install (src_install): O sistema movimenta os arquivos binários, manuais e ícones gerados para um diretório temporário que emula a raiz do sistema operacional, chamado de diretório de imagem (image).
  7. Fase de Merge: A operação de consolidação. O Portage transfere os arquivos da imagem para os diretórios absolutos (como /usr/bin/ e /usr/share/) e registra as localizações de cada arquivo no banco de dados do gerenciador de pacotes.


O ebuild final pode ser visto em:

Conclusão

Um guia básico sobre montar ebuild pode ser visto em:
Acredito que um ebuild pode ser simples ou complexo. Mas saber um pouco sobre como ele funciona, mesmo que não conhecendo tudo, pode ser de grande ajuda para entender o que acontece quando um programa é compilado e também para criar o seu próprio ebuild, mesmo que solicitando ajuda de uma IA.
   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Tema minimalista para Xubuntu 12.04

Mamãe, quero Slack! (parte 1)

Fedorinha, fedorão: comandinhos de montão

Basicão Funtoo

LAMP no Funtoo Linux em 15 minutos

Leitura recomendada

Uma análise do software livre e de sua história

Instalação de um Servidor Web

Linux - Só não usa quem não quer

Arch Linux - Passo a passo pós-instalação

Passo-a-passo para instalar o CentOS Linux 5.2

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts