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, ...). 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 capítulo 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. É possível também listar todos os arquivos instalados com a ferramenta que é parte do pacote.

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:

Metapackages
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.

To remove such a package from your system, running on the package won't have much effect as the dependencies remain on the system.

Portage has the functionality to remove orphaned dependencies as well, but since the availability of software is dynamically dependent it is important to first update the entire system fully, including the new changes applied when changing USE flags. After this one can run to remove the orphaned dependencies. When this is done, it might be necessary to rebuild the applications that were dynamically linked to the now-removed software titles but don't require them anymore, although recently support for this has been added to Portage.

All this is handled with the following three commands:

is provided by the package; do not forget to emerge it:

Licenses
Beginning with Portage version 2.1.7, it is possible to accept or reject software installation based on its license. All packages in the tree contain a LICENSE entry in their ebuilds. Running will show the package's license.

By default, Portage permits all licenses, except End User License Agreements (EULAs) that require reading and signing an acceptance agreement.

The variable that controls permitted licenses is called ACCEPT_LICENSE, which can be set in the file. In the next example, this default value is shown:

With this configuration, packages that require interaction during installation to approve their EULA will not be installable. Packages without an EULA will be installable.

It is possible to set ACCEPT_LICENSE globally in, or to specify it on a per-package basis in the file.

For example, to allow the license for the  package, add the following to :

This permits the installation of the package, but prohibits the installation of the  package, even though it has the same license.

License groups defined in the ACCEPT_LICENSE variable are prefixed with an  sign. A commonly requested setting is to only allow the installation of free software and documentation. To accomplish this, remove all currently accepted licenses (using ) and then only allow the licenses in the FREE group as follows:

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.

Terminology
As stated before, Portage is extremely powerful and supports many features that other software management tools lack. To understand this, we explain a few aspects of Portage without going into too much detail.

With Portage different versions of a single package can coexist on a system. While other distributions tend to name their package to those versions (like freetype and freetype2) Portage uses a technology called SLOTs. An ebuild declares a certain SLOT for its version. Ebuilds with different SLOTs can coexist on the same system. For instance, the freetype package has ebuilds with SLOT="1" and SLOT="2".

There are also packages that provide the same functionality but are implemented differently. For instance, metalogd, sysklogd, and syslog-ng are all system loggers. Applications that rely on the availability of "a system logger" cannot depend on, for instance, metalogd, as the other system loggers are as good a choice as any. Portage allows for virtuals: each system logger is listed as an "exclusive" dependency of the logging service in the logger virtual package of the virtual category, so that applications can depend on the package. When installed, the package will pull in the first logging package mentioned in the package, unless a logging package was already installed (in which case the virtual is satisfied).

Software in the Gentoo repository can reside in different branches. By default the system only accepts packages that Gentoo deems stable. Most new software titles, when committed, are added to the testing branch, meaning more testing needs to be done before it is marked as stable. Although the ebuilds for those software are in the Gentoo repository, Portage will not update them before they are placed in the stable branch.

Some softwares are 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.

Each Gentoo installation also adheres to a certain profile which contains, amongst other information, the list of packages that are required for a system to function normally.

Blocked packages
Ebuilds contain specific fields that inform Portage about its dependencies. There are two possible dependencies: build dependencies, declared in the DEPEND variable and run-time dependencies, likewise declared in RDEPEND. When one of these dependencies explicitly marks a package or virtual as being not compatible, it triggers a blockage.

While recent versions of Portage are smart enough to work around minor blockages without user intervention, occasionally such blockages need to be resolved manually.

To fix a blockage, users can choose to not install the package or unmerge the conflicting package first. In the given example, one can opt not to install postfix or to remove ssmtp first.

Sometimes there are also blocking packages with specific atoms, such as. In this case, updating to a more recent version of the blocking package could remove the block.

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.

Masked packages
When trying to install a package that isn't available for the system, this masking error occurs. Users should try installing a different application that is available for the system or wait until the package is marked as available. There is always a reason why a package is masked:

Necessary USE flag changes
The error message might also be displayed as follows, if  isn't set:

Such warning or error occurs when a package is requested for installation which not only depends on another package, but also requires that that package is built with a particular USE flag (or set of USE flags). In the given example, the package app-text/feelings needs to be built with USE="test", but this USE flag is not set on the system.

To resolve this, either add the requested USE flag to the global USE flags in, or set it for the specific package in.

Missing dependencies
The application to install depends on another package that is not available for the system. Please check Bugzilla if the issue is known and if not, please report it. Unless the system is configured to mix branches, this should not occur and is therefore a bug.

Ambiguous ebuild name
The application that is selected for installation has a name that corresponds with more than one package. Supply the category name as well to resolve this. Portage will inform the user about possible matches to choose from.

Circular dependencies
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.

Fetch failed
Portage was unable to download the sources for the given application and will try to continue installing the other applications (if applicable). This failure can be due to a mirror that has not synchronized correctly or because the ebuild points to an incorrect location. The server where the sources reside can also be down for some reason.

Retry after one hour to see if the issue still persists.

System profile protection
The user has asked to remove a package that is part of the system's core packages. It is listed in the profile as required and should therefore not be removed from the system.

Digest verification failure
This is a sign that something is wrong with the Gentoo repository - often, it is because a developer may have made a mistake when committing a package to the tree.

When the digest verification fails, do not try to re-digest the package personally. Running will not fix the problem; it will almost certainly make it worse!

Instead, wait an hour or two for the tree to settle down. It's likely that the error was noticed right away, but it can take a little time for the fix to trickle down the Gentoo repository. 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 package.

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