Agora que fomos apresentados às USE flags, podemos continuar com os arquivos configuráveis.
O arquivo make.conf, incluso no diretório /etc/portage (atualmente), é um arquivo que nos possibilita customizar todo o ambiente global do Portage. O que definirmos aqui será aplicado para todos os pacotes que instalarmos e para todas as modificações no sistema.
Para citar algumas possibilidades, podemos definir as USE flags, flags do processador, arquitetura, linguagem dos pacotes, entre uma infinidade de opções. Apesar de toda esta gama de configurações que veremos a seguir, as configurações do Portage não se resumem à apenas este arquivo, mas sim através da junção dos arquivos que vimos, alguns destes precedem o make.conf.
Entretanto o make.conf merece um bom conteúdo e espero trazer um pouco deste conteúdo para aqueles que não conhecem, mas enfatizo que, em caso de maiores curiosidades, sempre leia a man page. Inclusive aqui no VOL tem alguns arquivos make.conf. Sem mais delongas, vamos ao make.conf.
VARIÁVEIS
No make.conf trabalhamos com variáveis para definirmos as configurações que queremos de modo global. A declaração segue o mesmo esquema da maioria dos arquivos de configuração do
GNU/Linux: variavel="valor", entretanto, no make.conf, o nome das variáveis deve ser declarado em letras maiúsculas. É possível ainda fazer as declarações em formato shell-like: var="${var}".
Assim sendo podemos ainda referenciar o valor de uma variável A através de outra variável B. Veremos isto mais para frente. Vou escrever apenas as opções mais comumente usadas, pois o objetivo aqui não é ser uma man page. As opções de variáveis são:
- ACCEPT_CHOSTS: indica uma ou mais arquiteturas aceitas para compilação e instalação dos pacotes, o valor padrão desta variável é o mesmo que $CHOST. Esta variável será lida a partir do ebuild do pacote escolhido para instalação, na fase de configuração do pacote. Esta fase de configuração chama o arquivo de autoconfiguração (geralmente .configure) através de uma série de declarações no ebuild, assim o código será configurado corretamente antes da compilação do mesmo. Um exemplo do trecho de código relacionado ao passo de configuração pode ser:
src_configure() {
if [[ -x ${ECONF_SOURCE:-.}/configure ]] ; then
econf
fi
}
O código acima é um trecho padrão que será aplicado caso o próprio ebuild não defina o passo a passo de configuração. Isto está previsto e documentado no EAPI2 (comentei brevemente sobre EAPI na parte 2 desta série). A função econf() faz parte dos scripts ebuild e serve para moldar o processo de configuração no estágio acima. No caso da variável accept_chosts, a função irá verificar o valor de --host=${CHOST}.
- ACCEPT_KEYWORDS: keywords são arquiteturas suportadas por cada pacote, definida na variável de mesmo nome em cada script ebuild. Neste caso, ao declararmos esta variável no make.conf, estaremos habilitando a instalação de pacotes que ainda estejam em fase de teste em determinada arquitetura. Ex.:
ACCEPT_KEYWORDS="~amd64"
O prefixo ~ na frente da arquitetura informa ao Portage a aceitação de pacotes testing. Em alguns casos isto é necessário pois pacotes podem possuir dependências que podem estar em fase de teste em determinada arquitetura. Um exemplo fictício pode ser:
No caso acima precisamos habilitar a instalação testing do pacote =dev-perl/Term-Screen-1.30.0. A variável no make.conf tomará conta disto, mas o ideal é definir esta opção pacote a pacote para ganharmos um maior refinamento. Fazemos isto com o simples comando abaixo referenciando o arquivo ou diretório /etc/portage/package.accept_keywords:
No caso de um único arquivo de nome package.accept_keywords:
# echo "=dev-perl/Term-Screen-1.30.0 ~amd64" >> /etc/portage/package.accept_keywords
No caso de um diretório com vários arquivos:
# echo "=dev-perl/Term-Screen-1.30.0 ~amd64" >> /etc/portage/package.accept_keywords/Term-ScreenColor
Para efeito de conhecimento, a maioria dos ebuilds contém a variável KEYWORD, que serve para indicar a estabilidade e adaptação de ebuild e seu pacote em determinada arquitetura. Atualmente o Gentoo suporta as seguintes arquiteturas: Alpha, AMD64, ARM, ARM64, HPPA, IA64, MIPS, PPC, PPC64, SPARC e X86. Para o ebuild e seu respectivo pacote, um exemplo da variável Keyword poderia ser:
KEYWORDS="x86 sparc ~mips ~ppc ~ppc-macos -ia64"
- ACCEPT_LICENSE: nesta variável nós declaramos as licenças que serão aceitas automaticamente para instalação dos pacotes. Assim como a variável keyword, cada ebuild declara igualmente a licença do pacote em questão. Caso um pacote apresente uma licença que não esteja configurada no make.conf, o Portage apresentará esta licença para que seja aceita antes da compilação do pacote. Esta funcionalidade do Portage foi implementada na GLEP23. Tomemos como exemplo o pacote dev-lua/lua-openssl-0.4.1-r1:
Um exemplo de declaração desta variável no make.conf pode ser:
ACCEPT_LICENSE="@EULA @GPL-COMPATIBLE"
Ou ainda:
ACCEPT_LICENSE=" * " #aceitando todas as licenças disponíveis no Gentoo
No primeiro caso, o caractere @ indica que trata-se de um grupo que contém licenças. Assim como no caso da variável keyword, temos a opção de refinar esta configuração pacote a pacote no arquivo ou diretório /etc/portage/package.license. Por ex.:
#aceitar a licença para o pacote google-chrome igual à versão 42.0.2311.90_p1
=www-client/google-chrome-42.0.2311.90_p1 google-chrome #esta é a licença
- ACCEPT_PROPERTIES: esta variável é usada para mascarar pacotes com base em suas propriedades. Atualmente o único valor disponível aqui é: interactive. Ex.:
ACCEPT_PROPERTIES="-interactive"
Caso a opção do emerge --accept-properties seja definida antes da compilação, esta variável será sobreposta.