Um
ebuild é um pacote escrito completamente em bash script. O portage utiliza ebuilds para seu funcionamento. ebuilds contém diversas instruções para processamento, entre elas estão instruções de como fazer download, descompactar, aplicar patches, compilar e instalar, dependências necessárias, versão do software, licença, entre outras coisas. Os ebuilds ficam geralmente no diretório /usr/portage, que serve como a árvore de diretórios do Portage. Quando instruímos o emerge a instalar determinado pacote, ele irá buscar informações de como fazê-lo no arquivo ebuild do software desejado.
Pegando o mesmo exemplo do eix, teremos então, no diretório /usr/portage, toda uma estrutura de diretórios que são, na verdade, snapshots da árvore do Portage. Em cada diretório encontramos informações à respeito de cada pacote disponível para instalação, incluindo os pacotes em revisão, testing etc. Cada subdiretório representa uma categoria de pacote e, dentro deste subdiretório, encontra-se outro diretório que é referente ao pacote em si. Notamos que não há diretórios para cada versão de cada software, isto seria inviável.
Então, para efeito de exemplo, entrarei no seguinte diretório:
/usr/portage/app-portage/gentoolkit
Podemos notar que cada versão disponível possui o teu próprio arquivo de construção ebuild.
Vamos olhar mais de perto o conteúdo do pacote gentoolkit-0.3.0.9-r2.ebuild:
Notamos algumas informações pertinentes sobre a construção de um ebuild. Entre elas, podemos notar: compatibilidade entre as versões do Python, licença, SLOT, keywords etc. Há muito mais que isto. Um ebuild de cada pacote é um arquivo extenso. O emerge utiliza o ebuild de cada pacote, de suas dependências, de pacotes bloqueados pela atual instalação etc., com o teu próprio arquivo de configuração: o ebuild.sh.
Não entrarei em maiores detalhes no momento sobre o ebuild, isto ficará para um outro artigo. O assunto é extenso e requer muito tempo para ser explicado, entretanto, já tenho bastante coisa. Espero poder postar logo. Nos próximos artigos veremos mais de perto como o ebuild interage com o sistema, como o emerge busca suas informações entre outras coisas.