Instalando programas mascarados no Gentoo com o autounmask

26 de fevereiro de 2010

Existem basicamente três tipos de classificação de programas no Gentoo, que são: programas estáveis (+ stable) –passaram por uma bateria de testes e estão aptos a serem colocados em produção–, programas instáveis (~ unstable) –são considerados estáveis pelos seus desenvolvedores, mas não foram excessivamente testados pela equipe do Gentoo para serem liberados em produção– e por fim os programas “super instáveis” (M hardmask) –são pacotes que ou foram colocados no portage recentemente e não passaram para a fase de teste ou são pacotes que ainda estão em desenvolvimento e não existe previsão de sair uma versão final ou dezenas de outras possibilidades–. O interessante é entender que programas instáveis estão disponíveis para instalação, mas a equipe do Gentoo não recomenda a instalação dos mesmos, a não ser que você saiba o que está fazendo e entenda os riscos que está correndo.

Os programas que possuem versões que estão na fase de teste, são conhecidos com um til (~) na frente da versão, este til indica que o programa para o seu produtor foi considerado estável, mas para a equipe do Gentoo ainda está em teste e aguardando para que seja liberado na base de programas estáveis.

(Exemplo de um programa que possui versões instáveis(~), em fase de teste)

[I] kde-base/kdebase-meta
     Available versions:
        (4.3)   4.3.3 (~)4.3.4 4.3.5
        (4.4)   (~)4.4.0
        {aqua kdeprefix policykit semantic-desktop}
     Installed versions:  4.4.0(4.4)(21:30:36 10-02-2010)(-aqua -kdeprefix -policykit)
     Homepage:            http://www.kde.org/
     Description:         Merge this to pull in all kdebase-derived packages

Os programas que são considerados como super instáveis, são conhecidos com um [M] de mascarado, localizado na frente da versão. Os que apresentam 9999 são considerados mais instáveis.

(Exemplo de um programa que possui versão hardmask[M]~, super instáveis)

* www-client/chromium
     Available versions:  [M]~5.0.307.5 ~5.0.307.7 ~5.0.307.9 [M]~5.0.322.2 **9999 {ffmpeg plugins-symlink}
     Homepage:            http://chromium.org/
     Description:         Open-source version of Google Chrome web browser

Ambos os programas, (~)unstable e [M]~hardmask, não podem ser instalados se você estiver construído e ou utilizando o seu Gentoo em uma base estável. Esses programas possuem uma máscara que deverá ser removida para que a instalação do programa alvo possa ser concretizada. Existem várias maneiras de se fazer isso, manualmente ou utilizando ferramentas para auxílio. Estarei mostrando a ferramenta autounmask que faz praticamente todo o trabalho braçal para você.

Por que utilizar o autounmask?
Posso citar alguns motivos como, suprir dependências, organização dos arquivos, facilidade de uso etc.

Comece criando o diretório que irá armazenar os arquivos do autounmask e mais 3 arquivos que o autounmask irá utilizar para gravar algumas configurações, caso precise.

mkdir /etc/portage/package.keywords

(Todos os arquivos principais mascarados serão jogados para esse diretório criado, com o nome de autounmask-[nome do programa])

cd /etc/portage/ && touch package.mask; touch package.unmask; touch package.use

(Instalação do autounmask)

emerge -av autounmask

Tudo pronto e “configurado”, pois de configuração mesmo não teve nada. Agora o autounmask já pode ser utilizado. Veja um exemplo de como instalar um programa mascarado. Eu particularmente utilizo apenas de dois jeitos, com a opção -n(mantem sempre a última versão do programa, não precisando utilizar o autounmask quando sair uma nova versão) e sem opção, caso queira desmascarar apenas uma versão do programa e não as futuras. Um exemplo de utilizar sem a opção ‘-n’, seria a instalação de uma determinada versão do kernel.

Exemplo de instalação de um programa:

Primeiro, com o comando eix(o mesmo deve estar instalado), verifico se o programa está todo mascarado e se possui alguma versão que não esteja:

eix emesene
* net-im/emesene [1]
     Available versions:  ~1.6.0 {video}
     Homepage:            http://www.emesene.org
     Description:         Platform independent MSN Messenger client written in Python+GTK

[1] /usr/local/portage

Nota-se que o programa, emesene, só possui uma versão e está mascarada. Caso tente instalar esse programa, será avisado que o mesmo encontra-se mascarado e não poderá ser instalado até que sua máscara seja retirada.

emerge -av emesene

These are the packages that would be merged, in order:

Calculating dependencies... done!

!!! All ebuilds that could satisfy "net-im/emesene" have been masked.
!!! One of the following masked packages is required to complete your request:
- net-im/emesene-1.6.0 (masked by: ~amd64 keyword)

Como pode-se notar, o portage não deixou o programa ser instalado porque está mascarado, “dizendo” que todos os pacotes que poderiam satisfazem a dependência do programa que estamos tentando instalar, foi mascarado e “diz” que um dos programas mascarados(neste caso o próprio emesene) é necessário para completar a instalação. Basta então remover a mascara deste programa para prosseguir ou conseguir instalar tal programa mascarado. Para isso será utilizado o autounmask.

Utilização do autounmask:

autounmask [referência do programa]/programa-versão

(Sempre indique a versão que deseja desmascarar, como indicado abaixo)

autounmask -n net-im/emesene-1.6.0

 autounmask version 0.27 (using PortageXS-0.02.09 and portage-2.1.7.17)

 * Using repositories:
     /usr/portage

     /usr/local/portage

 * Using package.keywords file: /etc/portage/package.keywords/autounmask-emesene
 * Using package.unmask file: /etc/portage/package.unmask
 * Using package.use file: /etc/portage/package.use

 * Unmasking net-im/emesene-1.6.0 and its dependencies.. this might take a while..

 * Added 'net-im/emesene ~amd64' to /etc/portage/package.keywords/autounmask-emesene
 * done!

Como pode notar, o emesene foi adicionado com sucesso no diretório package.keyword, o qual foi criado anteriormente e adicionou as configurações de retirar a mascara do emesene, no arquivo “autounmask-emesene”. Se rodarmos novamente o comando emerge para a instalação do emesene, veja o que acontece!

emerge -av emesene

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N    ] net-im/emesene-1.6.0  USE="video" 0 kB [1]

Total: 1 package (1 new), Size of downloads: 0 kB
Portage tree and overlays:
 [0] /usr/portage
 [1] /usr/local/portage

Would you like to merge these packages? [Yes/No]

O programa encontra desmascarado e pronto para ser instalado.