# OLá problema em entender que são flags

## portaro

Tenho vergonha de perguntar mas não me resta outra.

é o meu 1º tópico e quero usar gentoo para conhecer mais o Linux e esta sua variante.

Ok.

Instalei já por várias vezes o calculate linux (pela facilidade e instalação).

Mas ando perdido no sistema e vou desistindo mas volto.

Queria saber como uso flags, por exemplo para o programa hplip que me pede USE=qt4 e não sei onde pôr essas flags nem que são.

Já procurei info tanto em Inglês como português e não entendo o que algumas infos dão.

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=2

?é aqui que ponho as flags? - 

/etc/make.conf

por outro lado o programa kiwix está mascarado e precisava dele.

Abraço a todos.

----------

## zeponi

Também ainda tenho dificuldade com Gentoo, ainda estou tentando entender melhor a questão das flags, mas é um sistema muito bom ao qual realmente quero usar, a respeito dos pacotes "masked", você pode usar um arquivo package.unmask nele adicionar o pacote de deseja remover o "masked" similar ao packge.use, mas nesse caso caso, somente adicionar o nome do pacote, segue o link abaixo

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=3&chap=3#doc_chap3

Espero ter ajudado...

----------

## ahgblopes

Quase um ano depois, mas aqui vai uma resposta de um usuário não muito mais experiente que vocês...

Flags = Bandeiras, ou seja, marcadores.

Até ai não ajuda muito, mas imagine que cada programa tem vários marcadores. Por exemplo, eu tenho um jogo que tem um marcador chamado "midi", outro chamado "opengl" e outro chamado "net". 

Agora já está melhorando... Quando vamos compilar esse jogo, o compilador irá verificar se estes marcadores estão ativos ou desativos.

Mas onde ativamos e desativamos estes marcadores?

Existe um arquivo chamado package.use, que fica dentro do diretório /etc/portage/

neste arquivo, cada linha contém o nome do programa segudio de seus marcadores.

Por exemplo, vamos supor que meu jogo chame turbokart

dai dentro deste arquivo package.use (que é um arquivo de texto normal, como qualquer outro) teríamos:

turbokart  midi -opengl -net

o que isso significa?  Significa que o jogo turbokart terá o marcador midi ativado e os marcadores opengl e net desativados (pois possui um sinal de menos (ífem) antes deles) .

Isto basta por enquanto....

O gerenciador de pacotes do gentoo (portage) irá consultar estes marcadores. Ele constatará que os marcadores opengl e net estão desativados e que o marcador midi está ativo.

Cada marcador representa um RECURSO suportado pelo programa. Cada recurso suportado pelo programa, normalmente implicará na instalação de pacotes extras. 

O portage, então, no nosso exemplo, na hora de instalar o jogo, vai ver que o marcador midi está ativo, então vai solicitar que um pacote extra seja instalado, por exemplo, o timidity, que reproduz arquivos midi.

Supondo que os outros dois marcadores estivessem ativos também (opengl e net), dai o portage também instalaria o opengl e alguma extensão para o jogo ser jogado em rede, por exemplo "turbokart-netclient"

Quem determina qual pacote extra será instalado de acordo com o marcador são os arquivos de configuração do jogo, o que foge do assunto por agora...

Mas resumindo, as flags (marcadores) são recursos de um programa. 

Além das flags instalarem pacotes extras, normalmente o próprio código fonte do programa é alterado também para suportar o recurso solicitado.

Um exemplo prático é o caso de programas que tem suporte para KDE e GNOME. 

se você usa o Gnome não faz sentido você compilar o programa com suporte a KDE. Ele vai ficar mais pesado, porque o código fonte vai ser adaptado pra ele lidar melhor com o KDE e além disso o programa vai "puxar" vários pacotes (chamados dependências) do KDE para serem instalados, o que vai gastar espaço em disco também.

Neste caso compilariamos o programa somente com suporte ao gnome, colacariamos no package.use:

programaexemplo gnome -kde

Existe uma coisa chamada "profile" no Gentoo, que automaticamente escolhe pra você quais flags vão ser escolhidas por padrão. para ver quais perfis você pode escolher, digite (como root):

eselect profile list

vai aparecer uma lista, dai você escolhe um dos perfis (Gnome, KDE ou Desktop (no caso de não usar nem gnome nem KDE)). Os outros perfis normalmente não serão usados por usuários "domésticos" (no multilib, hardend, etc)

Quando escolhemos o perfil gnome, por exemplo, automaticamente o portage já deduz que você quer desabilitar a flag kde e habilitar a flag gnome.

O segundo arquivo que nos ajuda é o make.conf, que fica na pasta etc.

Nele são definidas várias variáveis, e também estas flags, mas elas serão usadas globalmente, ou seja, se você coloca nesse arquivo que quer usar a flag "extras", esta flag pode ter um significado diferente para diversos programas, o que não é recomendado.

Lembrando que toda vez que me referi a flags (marcadores) neste artigo, é exatamente as USE flags que estou dizendo. Existem outros tipos de flags (cflags, cxxflags), mas isso seria assunto pra outro tópico. 

Para definir USE flags no arquivo make.conf basta acrescentar (caso já não exista) uma linha:

USE="flag1 flag2 -flag3 -flag4"

onde flag1 e 2 são recursos ativados globalmente e 3 e 4 desativados (globalmente).

Se vocês tem dúvida com isso, provavelmente não leram o Handbook do Gentoo, e provavelmente a instalação de vocês deve estar cheia de erros, ainda mais se seguiram o manual em português, que está desatualizado.

Infelizmente o único jeito de usar o gentoo é sabendo inglês pré-intermediário... A documentação em português é escassa e desatualizada, mas enfim, estou tentando ajudar como posso, visto que também não sou tão experiente assim (e nem meu inglês é tão bom assim, mas aprendi quase tudo por "tentativa e erro"(meu último erro foi perder todos meus dados por usar o comando rm -rf de forma insana, mas felizmente recuperei tudo com o programa photorc...))

Espero que tenham entendido.

obs: as vezes o portage nos "obriga" a ativar alguma USE flag, isso é super normal, basta acrescentar ela no arquivo package.use 

obs2: prefiram sempre usar USE flags por pacote (package.use) do que globais (make.conf)

obs3: nunca escrevam somente o nome do programa em package.use, isso deixa o portage mais lerdo, escrevam o nome inteiro:

ex:

categoriadoprograma/nomedoprograma recurso1 recurso2 -recursoinutil recursolega

exemplo das primeiras linhas do MEU package.use (nem tentem copiar, isso pode não funcionar pra vocês):

```

www-client/firefox custom-cflags custom-optimization gstreamer

media-libs/libsdl custom-cflags

x11-misc/cairo-dock xcomposite

net-print/hplip qt4

dev-python/PyQt4 -opengl

media-sound/audacity soundtouch  midi jack

```

obs4: não se deve ter vergonha de não saber, deve-se ter vergonha é de não querer aprender (espero que não seja o caso de vocês). 

obs5: Depois de um ano eu sei que já devem ter aprendido a usar as USE flags, mas isso aqui provavelmente vai servir pra alguém.

----------

