Como fazer um make.conf funcional no Gentoo
Introdução
Durante a instalação do Gentoo, configurar o make.conf talvez seja uma das tarefas mais complicadas, já que exige um certo conhecimento sobre o seu hardware e também sobre o que você vai querer que seu futuro sistema "suporte" ou não. A verdadeira função desse arquivo é passar para o compilador as opções que serão usadas na compilação do pacote, como, por exemplo, quais instruções do processador usar (como as instruções sse, mmx etc), além de servir como base para o gerenciador de pacotes buscar informações sobre alguns pacotes, como no caso de arquivos que utilizam uma licença que não é 100% livre, como o Sun Java, que precisa ter sua licença "aceita" no make.conf para poder ser instalado.Porém, meu principal objetivo nesse tutorial é ensinar como fazer um make.conf funcional, e não explicar como ele funciona, já que nem eu entendo muito bem algumas de suas funcionalidades :) .
CFlags
As CFlags são as instruções dadas ao compilador sobre para qual processador os pacotes devem ser otimizados. Por exemplo, se eu habilitar nas CFlags a opção -march=pentium4, os pacotes serão compilados com otimização para o Pentium 4. Inclusive, as CFlags dizem ao gcc quais instruções aquele processador possui, como as sse, que são automaticamente ativadas para "ajudar" na compilação.
Além da opção -march há também a variável MAKEOPTS="-jx" que diz quantos "processos" podem ser compilados ao mesmo tempo, em que para x recomenda-se utilizar o número de seus processadores +1. Por exemplo, uma pessoa que possui um Core 2 Quad, que tem 4 núcleos, deve utilizar um MAKEOPTS="-j5".
Um site que eu recomendo a vocês entrarem para checarem quais flags utilizar é esse que é da wiki em inglês do Gentoo. Nele vocês poderão encontrar modelos para as flags de seus processadores, sendo que é só copiar do mesmo jeito que está lá que é garantido que vai funcionar certinho.
USE Flags
As USE Flags dizem respeito a o que você quer que seu sistema seja compilado com suporte para. Por exemplo, se eu utilizar uma USE que contenha as opções gnome bluetooth X meu sistema terá suporte ao ambiente gráfico Gnome, ao X.Org e também tornará possível a utilização de dispositivos Bluetooth. Caso você queira desabilitar o suporte a algo você pode utilizar a mesma opção só que com um traço na frente. Um exemplo é, caso eu não queira suporte ao KDE, utilizar na USE a opção -kde. Um exemplo de USE básica que está no Handbook do Gentoo é:
USE="-gtk -gnome qt4 kde dvd alsa cdr"
Essa USE dará suporte a um sistema baseado em kde (e sem suporte ao gnome), que permite utilização de áudio sobre o ALSA e também suporte a leitura de dvds e a gravação de cds, com a utilização do QT no lugar do GTK. Um site onde pode-se encontrar as USE que podem ser usadas no Gentoo e uma descrição de cada uma delas é: http://www.gentoo.org/dyn/use-index.xml (em inglês).
Features
A seção Features do make.conf ativa alguns recursos interessantes na hora de compilar. O principal deles é o parallel-fetch que permite que o emerge baixe mais pacotes enquanto compila outros. Se não for usada essa opção, o emerge vai baixar um pacote, compilá-lo e só então baixar outro pacote, ou seja, essa opção faz com que o usuário ganhe um bom tempo na instalação dos pacotes. Outras opções que podem ser utilizadas nessa seção dizem respeito a programas como o ccache e o distcc. O primeiro deles permite que o sistema grave algumas informações sobre pacotes já compilados e, caso venha a compilar algo parecido novamente, utilize essas "informações" para acelerar o processo. O segundo programa permite a compilação de pacotes usando processamento paralelo, sendo uma boa opção para agilizar a instalação do Gentoo em computadores mais antigos. Abaixo seguem links sobre como instalar e utilizar esses programas:
http://en.gentoo-wiki.com/wiki/Ccache
http://www.gentoo.org/doc/en/distcc.xml
Existem mais features, só que eu não lembro de mais nenhuma agora :) .
Outras opções
No make.conf você também pode adicionar informações sobre alguns dispositivos do sistema para melhorar o suporte a eles. Um exemplo é a variável VIDEO_CARDS, que especifica qual a placa de vídeo que será utilizada pelo sistema, adicionando suporte a ela para o xorg, por exemplo, quando ele for compilado. Outra variável importante é a INPUT_DEVICES que diz ao gcc para qual dispositivos de entrada ele deve compilar os pacotes com suporte, como mouse, teclado, touchpad.
A variável LINGUAS adciona suporte a uma determinada linguagem na compilação de um pacote. Um exemplo é a LINGUAS="pt_BR", que adiciona suporte ao português do Brasil. Tal variável é importante para programas como o Firefox, que possuem traduções para várias línguas.
Além disso há também a opção que deve ser ativada para habilitar a instalação de certos pacotes que não são mais oficialmente suportados pelo Gentoo, que são os chamados Masked Packages. Para isso deve-se utilizar a seguinte variável : ACCEPT_KEYWORDS="~x86".
Existe também a opção que diz respeito a certas licenças que devem ser aceitas para que se torne possível a instalação de pacotes como o Java da Sun, o que foi citado no início deste artigo. Para isso deve utilizar a opção ACCEPT_LICENSES="", onde a licença em questão vai entre as aspas.
Exemplo de make.conf
Esse é o make.conf de meu Gentoo, instalado em um Desktop Core 2 Duo, com placa de vídeo Intel e suporte a um sistema Gnome-based:
## CFlags
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
CHOST="i686-pc-linux-gnu"
MAKEOPTS="-j3"
## Mirrors - Durante a instalação, será perguntado ao usuário qual mirror ele quer utilizar e é por esse motivo que não abordei esse tópico no tutorial
GENTOO_MIRRORS="http://www.las.ic.unicamp.br/pub/gentoo"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
## USE Flags
USE="-kde gnome X a52 aac aalib acpi aim alsa ao audiofile bash-completion bzip2 cairo cdda cddb cdr cgi css ctype cups curl cxx cvs dbase dbus dga djvu dri dts dv dvd dvdr encode -evo exif expat fam fbcon ffmpeg flac ftp gif gimp gnutls gphoto2 gzip gstreamer gtk hal imagemagick java jpeg jpeg2k lame lzo mad matroska matrox mime mng motif mp3 mp4 mpeg mplayer msn mtp nautilus ncurses ogg openal opengl pdf perl php png python raw samba smp sndfile sockets ssl svg svga tcl theora tiff timidity tk unicode v4l udev v4l2 vcd vorbis wavpack win32codecs x264 xml xpm xscreensaver xulrunner xv xvid zlib"
## Demais Opções
INPUT_DEVICES="evdev keyboard mouse"
VIDEO_CARDS="intel"
LINGUAS="pt_BR"
FEATURES="parallel-fetch ccache"
CCACHE_DIR="/var/tmp/ccache/"
CCACHE_SIZE="1G"
Conclusão
Bom pessoal, é isso. Espero ter ajudado vocês um pouco na configuração de seus makes, já que eu mesmo fiquei várias horas tentando fazer um funcional quando comecei no Gentoo. Desculpem a falta de informações, mas não queria que o tutorial ficasse ainda maior e também não sou um expert nisso, só quero dividir o pouco que sei. Sintam-se à vontade para mandar sugestões ou correções para nós. Obrigado e boa sorte!
Última atualização (Sáb, 22 de Janeiro de 2011 04:15)


