Estrutura e Funcionamento de um Ebuild no Gentoo Linux

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

[ Hits: 174 ]

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

A Origem dos Nomes

Instalando COSMIC no Linux Mint

Conkyzando e atalhando o Lubuntu 12.10

Gnome-shell no Ubuntu em um clique

DOOM clássico rapidão

Leitura recomendada

O mínimo que você precisa saber sobre o terminal (parte 1)

Cinco distribuições para iniciantes

Como criar pacotes para o Arch Linux

Lidando com compactação de arquivos no Linux

Instalando o Slackware 10.1

  
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