Handbook:Parts/Working/Portage/pt-br

Bem Vindo ao Portage
O Portage é uma das mais notáveis inovações do Gentoo em gerenciamento de software. Com sua grande flexibilidade e enorme quantidade de recursos ele é visto frequentemente como a melhor ferramenta de gerenciamento de software disponível para Linux.

O Portage é inteiramente escrito em Python e Bash e assim é totalmente visível aos usuários uma vez que ambas são linguagens de scripts.

A maioria dos usuários irá trabalhar com o Portage através da ferramenta. Este capítulo não foi feito para duplicar as informações disponíveis na página de manual do emerge. Para uma lista completa das opções do emerge, por favor consulte a página do manual:

Ebuilds
Quando a documentação do Gentoo falar sobre pacotes, significa títulos de software disponíveis aos usuários Gentoo através do repositório Gentoo. Este repositório é uma coleção de ebuilds, arquivos que contém toda a informação que o Portage necessita para manter o software (instalar, procurar etc). Estas ebuilds residem no como padrão.

Quando alguém pergunta ao Portage para executar alguma ação em relação ao títulos de sotware, ele irá usar as ebuilds no sistema como banco de dados. É muito importante atualizar regularmente as ebuilds no sistema para que o Portage saiba sobre novo software, atualizações de segurança, etc.

Atualizando o repositório Gentoo
O repositório Gentoo é normalmente atualizado com, um rápido utilitário de transferência de arquivos incremental. Atualizar e bastante simples já que o comando provê um front-end para o :

Algumas vezes, restrições de firewall aplicadas, previnem o de contatar os espelhos. Neste caso, atualize o repositório Gentoo através de snapshots gerado diariamente. A ferramenta automaticamente baixa e instala o ultimo snapshot no sistema:

Uma vantagem adicional de usar é que ele permite ao administrador a baixar no repósitório Gentoo somente snapshots que são assinados pela chave GPG de engenharia do Gentoo. Mais informação sobre isto pode se encontrada na seção de características do Portage baixando snapshots do repostório Gentoo validados.

Procurando por software
Há varias maneira de procurar software através do repositório Gentoo. Uma delas e através do. Como padrão, retorna os nomes do pacotes que os títulos correspondem (completa ou parcialmente) ao termo procurado.

Por exemplo, para procurar por todos os pacotes que têm "pdf" em seus nomes:

Para pesquisar através das descrições também, use a opção  (ou  ):

Note que a saída retorna muita informação. Os campos são claramente especificados:

Instalando software
Quando um título de software é encontrado, então a instalação necessita de apenas um comando. Por exemplo, para instalar o gnumeric:

Uma vez que muitas aplicação dependem umas das outras, uma tentativa de instalar um certo pacote pode resultar na instalação de varias dependências também. Não se preocupe, o Portage cuida das dependências também. Para achar o que o Portage deverá instalar, adicione a opção. Por exemplo:

Durante a instalação do pacote, o Portage irá baixar o código fonte necessário pela internet (se necessário) a guardar por padrão no. Após isto ele irá descompactar, compilar e instalar o pacote. Para dizer ao Portage para somente baixar as fontes sem instala-las, adicione a opção  ao comando emerge:

Achando a documentação de um pacote instalação
Muitos pacotes vem com sua própria documentação. Algumas vezes, a USE flag  determina se a documentação do pacote deve ser instalada ou não. Para ver se a USE flag  é usada por um pacote, use :

A melhor maneira de habilitar a USE flag  é fazendo por pacotes via, então somente a documentação dos pacotes desejados é instalada. Para mais informação, por favor leia o seção USE flags.

Uma vez que o pacote esteja instalado, sua documentação é geralmente encontrada no subdiretório com o nome do pacote no diretório :

A more sure way to list installed documentation files is to use 's  option. is used to query Portage's database and comes as part of the package:

The  option can be used with other rules to view the install locations for many other types of files. Additional functionality can be reviewed in 's man page:.

Removendo software
Para remover software de um sistema, use. Isto irá dizer ao Portage para remover todos os arquivos instalados por este pacote do sistema. Uma exceção são os arquivos de configuração desta aplicação "se" eles foram alterados pelo usuário. Deixar os arquivos de configuração permite aos usuários continuar trabalhando com o pacote sem a necessidade de reconfiguração se os pacotes forem instalados mais tarde.

Quando um pacote é removido do sistema, as dependências deste pacote que foram instaladas automaticamente são deixadas no sistemas. Para que o Portage localize todas as dependências que podem agora ser removidas, use a funcionalidade do emerge code>--depclean, que será explicada mais tarde.

Atualizando o sistema
Para manter o sistema em perfeito estado (e sem mencionar com as últimas atualizações de segurança) é necessária uma atualização do sistema regularmente. Uma vez que o Portage somente checa as ebuilds no repositório Gentoo, a primeira coisa a fazer é atualizar este repositório. Quando o repositório Gentoo é atualizado, o sistema pode se atualizado usando. No próximo exemplo, a opção  é usada também para que o Portage mostre a lista de pacotes que serão atualizados e espere uma confirmação:

O Portage irá então procurar por novas versões dos aplicativos que estão instalados. Contudo, ele irá somente verificar as versões dos aplicativos que estão explicitamente instaladas (as aplicações listadas em ) - ele não irá checar suas dependências. Para atualizar as dependências destes pacotes teambém, adicione a opção :

Ainda assim, isto não inclui todos os pacotes: alguns pacotes no sistema são necessários apenas durante o processo de compilação. O Portage chama este pacotes build dependencies. Para incluir estes pacotes em um ciclo de atualização adicione :

Uma vez que atualizações de segurança acontecem em pacotes que não estão explicitamente instalados no sistema (mas que são dependências de outros programas), é recomendado executar este comando de vez em quando.

Se as configurações USE do sistemas foram alteradas, é recomendado adicionar  também. O Portage irá verificar se a alteração requer a instalação de novos pacotes ou a recompilação dos existentes:

Metapacotes
Alguns pacotes no repositório Gentoo não tem nenhum conteúdo real mas são usados para instalar uma coleção de pacotes. Por exemplo, o pacote irá instalar um ambiente KDE completo no sistema baixando os vários pacotes relacionado ao KDE e sua dependências.

Para remover este pacote de seu sistema, executar no pacote não tem muito efeito já que suas dependências ficarão no sistema.

O Portage tme a funcionalidade de remover dependências órfãs, mas umas vez a disponibilidades de software é dinamicamente dependênte é importante primeiro atualizar completamente o sistema inteiro, incluindo as novas alterações nas USE flags. Após isto pode-se executar para remover as dependências órfãs. Quando concluído, pode ser necessário recompilar as aplicações que foram linkadas dinamicamente aos agora removidos softwares mas não os requerem mais, suporte recente para isto foi adicionado ao Portage.

Tudo isto é feito com os três seguintes comandos:

é fornecido pelo pacote ; não esqueça de emerge:

Licenças
Começando com o Portage versão 2.1.7, é possível aceitar ou rejeitar a instalação de software baseado em sua licença. Todos os pacotes na ávore contém uma LICENSE em suas ebuilds. Executando irá mostrar a licença do pacote.

Como padrão, o Portage permite todas as licenças, exceto End User License Agreements (EULAs) que requerem leitura e assinatura em aceitação.

A variável que controla as licenças permitidas é chamadas ACCEPT_LICENSE, que pode ser configurada no arquivo. No próximo exemplo, seu valor padrão é mostrado:

Com esta configuração, os pacotes que requerem interação durante a aprovação de sua EULA não irão ser instaláveis. Pacotes sem uma EULA irão ser instaláveis.

É possível configurar ACCEPT_LICENSE globalmente no, ou especifica-la por pacote no arquivo.

Por exemplo, para permitir a licença para o pacote, adicione o seguinte em :

Isto permite a instalação do pacote, mas proibe a instalação do pacote , mesmo que eles tenham a mesma licença.

Grupos de licença definidos na variável ACCEPT_LICENSE são prefixadas com um sinal. Uma configuração comumente requerida é para somente permitir a instalação de software e documentação livre. Para conseguir isto, remova todas a licenças atualmente aceitas (usando ) e então permita somente as licenças no grupo FREE como segue:

In this case, "free" is mostly defined by the FSF and OSI. Any package whose license does not meet these requirements will not be installable on the system.

Terminologia
Como dito antes, o Portage é extremamente poderoso e suporta muitas funções que outros gerenciadores de software não tem. Para entender isto, nos explicaremos ums poucos aspectos do Portage sem entrar em muitos detalhes.

Com o Portage diferentes versões de um mesmo pacote podem coexistir em um sistema. Enquanto outras distribuições tendem a dar nomes em seus pacotes para essas versões (como freetype e freetype2) o Portage usa uma terminologia chamada "SLOT". Um ebuild declara um certo SLOT para sua versão. Ebuilds com diferentes SLOTs podem coexistir em um mesmo sistema. Por exemplo, o pacote freetype tem ebuilds com SLOT="1" e SLOT="2".

Há também pacotes que proveem a mesma funcionalidade mas são implementados de forma diferente. Por exemplo, metalogd, sysklogd, e syslog-ng são todos sistemas de log. Aplicações que para sua disponibilidade precisam de um "sistema de log" não podem depender por exemplo, do metalog, se a outras opções de sistemas de log. O Portage permite virtuais: cada sistema de log é listado com uma "exclusiva" dependência de um serviço de log em um pacote virtual de uma categoria virtual, então estas aplicação pode depender do pacote. Quando instalado, o pacote irá baixar o primeiro pacote de log mencionado neste pacote, a não ser que um pacote de log já esteja instalado (neste caso a virtual já foi satisfeita).

Software no repositório Gentoo pode residir em diferentes ramos. Como padrão o sistema somente aceita pacotes que o Gentoo considera estáveis. Muitos títulos de software novos, quando enviados, são adicionados ao ramo de teste, significando que mais teste são necessários antes que ele seja marcado como estável. Mesmo que os ebuilds deste software esteja no repositório Gentoo, o Portage não irá atualiza-los se eles não forem colocados no ramo estável.

Some software is only available for a few architectures. Or the software doesn't work on the other architectures, or it needs more testing, or the developer that committed the software to the Gentoo repository is unable to verify if the package works on different architectures.

Cada instalação Gentoo adere a um certo perfil, que contém, além de outras informações, a lista de pacotes que são requeridos para o sistema funcionar normalmente.

Pacotes Bloqueados
Ebuilds contem campos específicos que informam ao Portage sobre suas dependências. Há duas dependências possíveis: dependências de build, declaradas na variável DEPEND e dependências de execução, declaradas em RDEPEND. Quando uma desta dependêcias indica explicitamente que um pacotes ou virtual não e compatível, um bloqueio é disparado.

Enquanto versões recentes do Portage são espertas o bastante para atravessar bloqueios menores sem intervenção do usuário, ocasionalmente alguns bloqueios precisam ser resolvidos manualmente.

Para corrigir um bloqueio, usuários podem escolher não instalar o pacote ou unmerge o pacore conflitante primeiro. Neste exemplo, podemos optar por não instalar o postfix ou remover o ssmtp primeiro.

Algumas vezes há também pacotes bloqueados com versões específicas, como. Neste caso, atualizar para uma versão mais recente do pacote pode remover o bloqueio.

It is also possible that two packages that are yet to be installed are blocking each other. In this rare case, try to find out why both would need to be installed. In most cases it is sufficient to do with one of the packages alone. If not, please file a bug on Gentoo's bugtracking system.

Pacotes Mascarados
Quando tentar instalar um pacote que não está disponível para o sistema, este erro de mascaramento ocorre. Usuários devem tentar instalar uma aplicação diferente que esteja disponível para o sistema ou esperar até o pacote ser marcado como disponível. Há sempre uma razão porque o pacote é mascarado:

Mudanças necessárias nas USE flags
A mensagem de erro pode também ser mostrada como segue, se  não estiver habilitado:

Este aviso ou erro ocorre quando um pacote é requerido para instalação ao qual não depende de outro pacote, mas este pacote requer um USE flag em particular para compilação (o conjunto de USE flags). No exemplo dado, o pacote app-text/feelings precisa ser compilado com USE="test", mas esta USE flags não está habilitada no sistema.

Para resolver isto, adicione a USE flag requerida para as USE flags globais em, ou habilite para um pacote especifico em.

Dependências faltantes
A aplicação a ser instalada depende de outro pacote que não está disponível para o sistema. Por favor cheque no Bugzilla se o problema é conhecido e se não, por favor faça um relatório. A não se que o sistema esteja configurado para mais de um ramo isto não deve ocorrer e provalvelmente é um bug.

Nome do ebuild ambíguo
A aplicação que foi selecionada para instalação tem seu nome que corresponde a mais de um pacote. Forneça também a nome da categoria para resolver isto. O Portage irá informar o usuário sobre as possíveis opções a escolher.

Dependências circulares
Two (or more) packages to install depend on each other and can therefore not be installed. This is most likely a bug in one of the packages in the Gentoo repository. Please re-sync after a while and try again. It might also be beneficial to check Bugzilla to see if the issue is known and if not, report it.

Falha ao baixar
O Portage não conseguiu fazer o download dos fontes da aplicação e irá tentar continuar instalando outras aplicações (se aplicável). Esta falha pode acontecer devido um espelho não estar sincronizado corretamente ou por causa de um ebuild apontar para um local incorreto. O servidor onde os fontes residem podem também estar fora do ar por alguma razão.

Tente novamente em uma hora para ver se o problema ainda persiste.

Proteção do perfil do sistema
O usuário tentou remover um pacote que é parte do núcleo de pacotes do sistema. Ele é listado como requerido pelo perfil e não deve ser removido do sistema.

Falha na verificação do resumo
This is a sign that something is wrong with the Gentoo repository - often, caused by a mistake made when committing an ebuild to the Gentoo ebuild repository.

When the digest verification fails, do not try to re-digest the package personally. Running will not fix the problem; it quite possibly could make it worse.

Instead, wait an hour or two for the repository to settle down. It is likely that the error was noticed right away, but it can take a little time for the fix to trickle down the rsync mirrors. Check Bugzilla and see if anyone has reported the problem yet or ask around on (IRC). If not, go ahead and file a bug for the broken ebuild.

Once the bug has been fixed, re-sync the Gentoo ebuild repository to pick up the fixed digest.