Usando "bandeiras"?
Quando instalamos o
Linux, seja em qual for a distribuição, nós fazemos escolhas que dependem do ambiente que desejamos criar para o nosso trabalho. Escolhas para criar um servidor web não serão as mesmas para um desktop doméstico. E vai além da escolha de pacotes. Inclui também quais as características e peculiaridades acionadas em diversos pacotes. Por exemplo, se vamos trabalhar apenas no GNOME sem usar o KDE, por que deveríamos compilar pacotes com o suporte a KDE? Será inútil.
Para auxiliar o usuário a instalar ou ativar o que realmente ele quer, o Gentoo mais uma vez surge com sua política de liberdade de escolha ao máximo. É aqui onde entram as flags (bandeiras). Vamos usar a expressão original, flag, e não "bandeira", por questões de padronização com outras documentações.
Uma USE flag é uma palavra-chave que inclui informação sobre suporte e dependências. Se definimos uma USE flag, o Portage sabe que desejamos dar suporte para a palavra-chave indicada. Apenas lembre que isso também muda a informação de dependências para um pacote.
Vejamos um exemplo típico: o uso de kde. Se não tivermos essa palavra chave na variável USE, todos os pacotes com suporte opcional para KDE serão compilados sem suporte ao KDE. Todos os pacotes com uma dependência opcional serão instalados sem as bibliotecas do KDE como dependências. Do contrário, se definirmos a palavra-chave kde, então os pacotes mencionados serão compilados com suporte a KDE, e as bibliotecas citadas serão todas instaladas como dependências.
Portanto, se definirmos bem as palavras-chave, teremos como consequência um sistema desenhado especificamente para nossas necessidades.
Existem dois tipos de USE flags: globais e locais. Uma USE flag global é usada por todos os pacotes, em todo o sistema. É a opção mais usada. Já a local é usada para um pacote específico.
Uma lista das USE flags globais pode ser vista em /usr/portage/profiles/use.desc. Para uma lista das locais, veja /usr/portage/profiles/use.local.desc.
USE flags EM AÇÃO
Provavelmente você já está convencido de como as USE flags são úteis se bem usadas. Agora vamos ver como fazer isso.
Todas as USE flags são declaradas a partir da variável USE. O Gentoo já vem com uma configuração padrão para a variável. A equipe do Gentoo tenta "adivinhar" quais as opções mais úteis e comuns para a maioria dos usuários. Se você quiser mudar, o que eu certamente faço sempre, defina usando o arquivo
/etc/make.conf para USE flag global. Para basta incluir a palavra chave dentro da variável para incluir o suporte. Se desejar tirar o suporte, coloque a palavra chave com um sinal de menos na frente ( - ). Por exemplo, para incluir suporte ao GNOME, mas retirar suporte ao KDE, edite o /etc/make.conf incluindo a variável como abaixo:
USE="gnome -kde"
Não vamos entrar em detalhes para o uso das USE flags locais. Mas também é algo bem simples. Para mais informações, veja man portage e tudo está bem explicado por lá.
Há ainda a possibilidade de usar USE flags apenas "momentaneamente". Traduzindo: quando vamos instalar um determinado pacote, talvez não desejamos acrescentar suporte a determinada característica. Podemos então editar o /etc/make.conf uma vez, instalar o pacote, e depois editar novamente o /etc/make.conf. Mas isso não é necessário. Se for apenas para um pacote específico, podemos definir a variável USE como uma variável de ambiente. Instalamos o pacote com a USE flag que queremos, e ao reiniciarmos o sistema ela não estará mais lá.
Após alterar suas USE flags, é preciso dizer ao sistema para usar os novos valores. Primeiro, use a opção -- newuse:
# emerge --update --deep --newuse world
Agora use o --depclean para remover as dependências que ficaram obsoletas pelo uso dos novos valores da variável USE:
# emerge -p --depclean
No comando acima usamos a opção -p em vista de emerge --depclean ser uma operação perigosa, podendo acarretar em danos ao sistema. A opção -p altera o comportamento do comando, e apenas uma lista dos pacotes que serão removidos é mostrada na tela. Após termos certeza que a lista a ser removida não é "perigosa", passamos para o último passo:
# revdep-rebuild
Agora o sistema está atualizado para usar as novas USE flags.