Nesta primeira parte, veremos conceitos de
ebuilds,
atoms e alguns arquivos de configuração. É uma introdução superficial, pois precisamos conhecer primeiro o terreno em que estamos adentrando. As próximas partes (demais artigos), teremos mais conteúdo técnico.
Embora grande parte da informação aqui contida tenha vindo diretamente da documentação de cada ferramenta (man pages, sites, documentos nos diretórios locais etc), não se trata de uma tradução das mesmas. Não é minha intenção e, se assim o parecer, peço desculpas antecipadamente.
Trata-se sim, de horas e horas dispendidas para juntar informações à respeito, configurações, testes e mais testes, para chegar à algo que se pareça com um bom conteúdo para ser postado aqui no VOL.
Espero que gostem e que critiquem construtivamente, pois assim criamos grandes conteúdos.
Introdução
O
Portage não é um simples gerenciador de programas, de uma certa forma, ele é o Gentoo. Um não funciona sem o outro. Suas funcionalidades estão tão interligadas ao sistema de tal forma, que é impossível falar de Gentoo sem falar do Portage. Veremos alguns pequenos detalhes sobre este software incrível:
- Portage é completamente escrito em linguagem Python e Bash Script.
- É geralmente tido como a mais notável inovação no gerenciamento de software para GNU/Linux.
- É baseado no conceito dos ports do BSD, de uma forma melhorada. O que isto significa? Significa que os pacotes são baixados e distribuídos com instruções específicas através de makefiles para o compilador. A partir daí, em uma instalação de algum programa, por exemplo, o mesmo será compilado de acordo com a arquitetura da máquina, gerando um ganho no desempenho. A flexibilidade disto é enorme e as possibilidades, quase infinitas. Alterar instruções em tempo de compilação, para melhorar aqui e ali em um software, é uma coisa corriqueira. Por outro lado, como nem tudo são flores, o grande problema de um sistema assim é o tempo de compilação dos programas, sendo que pode chegar a horas e horas, até mesmo dias, dependendo da arquitetura da máquina. Entretanto, após compilado, o ganho é visível.
- Está licenciado sob a GPLv2.
O Portage não é um único software, como os tradicionais gerenciadores de programas, trabalhando para o todo, ele é um conjunto de softwares como o próprio emerge, qapplets, gentoolkit, ebuilds etc. Durante este e os próximos artigos veremos de perto, tecnicamente e não tecnicamente, cada um destes softwares que formam o Portage.
Também há uma (algumas na verdade) interface gráfica para o Portage - o
Porthole. Porém este não é utilizado entre a maioria dos Gentooístas, pois não fornece toda a flexibilidade da linha de comando, além do que, qualquer operação feita pelo Porthole, o mesmo não informará ao usuário sobre quebra de dependências, quebra de pacotes etc. Seu uso é considerado um risco ao sistema e desencorajado.
Para o Portage, há três fases de estabilidade para cada
ebuild. São elas:
estável: a versão estável compreende que não há qualquer tipo de problema no pacote, qualquer falha de segurança ou qualquer outra falha que porventura venha a prejudicar o sistema.
keyword masked: os pacotes que estão nesta fase ainda não foram testados exaustivamente nas arquiteturas, bem como nem todos os testes de segurança foram feitos. A instalação de pacotes, deste nível, é possível no Gentoo, porém é considerado um risco por parte do usuário. Coisas estranhas podem acontecer. Os pacotes deste nível são marcados com o prefixo (~). Ex.:
ebuild N ~ dev-perl/Term-Screen-1.30.0
- hard masked: pacotes nesta fase ainda estão no "limbo". São pacotes quebrados, com várias falhas de segurança. São pacotes que oferecem perigo real ao sistema e ao usuário. Embora seja possível, não é aconselhável, de forma alguma, a instalação de pacotes hard masked. Os pacotes deste nível são marcados com o prefixo (#). Ex.:
[ebuild U #] x11-base/xorg-server-1.11.99.2 [1.11.2-r2]
Quando instalamos o Gentoo, é necessário baixar o snapshot mais recente da árvore do Portage para o sistema, desta forma teremos todos os ebuilds, de todos os pacotes (incluindo pacotes
testing e
hard masked), nos diretórios locais. Num primeiro momento a operação é demorada, pois é preciso baixar todas estas informações do Portage. Isto é feito com o seguinte comando:
# emerge-webrsync
Após a instalação do sistema, para atualizar nosso repositório local, tudo que temos que fazer é:
# emerge --sync
Assim, estamos sincronizando nosso repositório local com o repositório oficial do Portage. Segue uma imagem que explica o processo de sincronização:
Não entrarei em maiores detalhes sobre o Portage em si, no momento, isto ficará para um outro artigo. O foco aqui será as ferramentas utilizadas no mesmo, ou como as chamo: Portage Tools.