SLOTS e VIRTUALS
Já mostramos o suficiente para entender como o
Portage é uma ferramenta poderosa. Mas ainda há outras características específicas que passamos a ver agora.
Outras distribuições intitulam seus pacotes segundo as versões disponíveis, tal como pacote1, pacote1.3, pacote2.2 etc. O Portage gerencia as versões de forma diferente, possibilitando a convivência de várias versões do mesmo pacote dentro do sistema. É utilizada uma metodologia chamada SLOTS. Um determinado ebuild declara um SLOT para sua versão. Assim ebuilds com SLOTs diferentes podem coexistir no mesmo sistema.
Além disso, o
Gentoo Linux preza pela liberdade de escolha do usuário. Essa é uma de suas premissas básicas. Dessa forma diversas vezes há mais de um pacote disponível para a mesma tarefa. Por exemplo, metalogd, sysklogd e syslog-ng são todos loggers do sistema. No Gentoo, se um pacote precisa de um logger para funcionar, ele não dependerá especificamente do metalogd, por exemplo, pois os outros loggers são vistos igualmente como boas escolhas. O Portage usa, para esses casos, os chamados VIRTUALS: cada logger dispõe um virtual/syslog, de forma que os programas possam depender desse virtual/syslog e não dos loggers específicos.
Pacotes "mascarados" e mensagens de erro
Quando tentamos instalar um pacote, pode ocorrer uma mensagem de erro avisando que o pacote está "mascarado", significando que você não conseguirá instalar o pacote - pelo menos pelas vias padrões. A solução trivial seria instalar outro pacote ou esperar que o pacote desejado fique disponível, o que não é muito confortável. Para ver a lista de pacotes mascarados, veja em /usr/portage/profiles/package.mask. Por que acontece esse tipo de erro? Há diversas razões, e elas são vistas na própria mensagem de erro. Veja a mensagem exibida em certo sistema ao tentar instalar o pacote latex-beamer:
# emerge latex-beamer
Calculating dependencies -
!!! All ebuilds that could satisfy "latex-beamer" have been masked.
!!! One of the following masked packages is required to complete your request:
- dev-tex/latex-beamer-3.01-r1 (masked by: package.mask, ~amd64 keyword)
# Alexandre Buisse <nattfodd@gentoo.org> (21 Feb 2007)
# All of those are provided by tetex-3 which is now stabilized everywhere.
# The current TeX setup doesn't yet allow for single package updates so
# those are masked for the time being.
- dev-tex/latex-beamer-3.06-r1 (masked by: package.mask, ~amd64 keyword)
- dev-tex/latex-beamer-3.00-r1 (masked by: package.mask)
- dev-tex/latex-beamer-3.06 (masked by: package.mask, ~amd64 keyword)
Note que a mensagem de erro dá informações que vão além do simples aviso "pacote mascarado". Após o nome do pacote, há a expressão "masked by:". O que vem a seguir indica o motivo do erro. Veja abaixo o significado de cada expressão (onde houver "arquit" leia "arquitetura", ou seja, x86, amd64 etc):
- ~arquit keyword: o pacote não foi testado o suficiente para ser colocado como estável. Pode demorar alguns dias ou semanas para ficar disponível.
- -arquit keyword ou -* keyword: o programa não funciona para sua arquitetura.
- missing keyword: a aplicação ainda não foi testada para sua arquitetura. Duas opções: ou peça para a equipe do Gentoo testar o pacote, ou teste você mesmo e envie os resultados para o site bugzilla.
- package.mask: o pacote é instável, e foi deliberadamente marcado para não ser usado.
- profile: o pacote não se comporta bem para o seu sistema. Ele pode causar uma interrupção, 'quebrando' o sistema.
Um erro pode ocorrer quando tentamos instalar uma aplicação usando uma expressão que indica mais de um pacote. Se isso ocorrer, o Portage indica as opções disponíveis e você deve escolher entre elas.
Embora não seja frequente, podem surgir situações de dependência circular, ou seja, onde dois ou mais pacotes dependem uns dos outros para serem instalados. Isso geralmente vem de um bug na árvore do Portage. Para corrigir, após alguns dias atualize a árvore do Portage (conforme já vimos anteriormente) e tente novamente. Se possível, entre no bugzilla e informe a ocorrência.
Conforme já mencionamos, o Portage não verifica a relevância de pacotes quando estamos tentando removê-los, a menos que tal remoção possa "acabar" com o sistema. Se for o caso, mais uma mensagem de erro pode aparecer, e é geralmente melhor seguir a recomendação dessa mensagem.