Gentoo Logo

Aviso : Este documento não é válido e não é mais mantido.


[ << ] [ < ] [ Início ] [ > ] [ >> ]


1. Uma introdução ao Portage

Conteúdo:

1.a. Bem-vindo ao Portage

O Portage é provavelmente a inovação mais notável do Gentoo no gerenciamento de software. Com sua alta flexibilidade e enorme quantidade de funções, é freqüentemente visto como a melhor ferramenta de gerenciamento de software disponível para Linux.

O Portage é completamente escrito em Python e Bash e portanto totalmente visíveis a seus usuários já que as duas são linguagens de scripting.

A maior parte dos usuários usa o Portage através da ferramenta emerge. Este capítulo não é feito para duplicar a informação disponível na página de man do emerge. Para uma listagem completa das opções do emerge, por favor consulte sua página de man:

Listagem de código 1.1: Lendo a página de man do emerge

$ man emerge

1.b. A árvore do Portage

Ebuilds

Quando nós falamos de pacotes, nós queremos dizer títulos de software que estão disponíveis para os usuários do Gentoo através da árvore do Portage. A árvore do Portage é uma coleção de ebuilds, arquivos que contêm toda informação que o Portage precisa para manter o software (instalar, procurar, ...). As ebuilds residem em /usr/portage por padrão.

Quando você pedir ao Portage tomar alguma ação com relação a títulos de software, ele usará as ebuilds em seu sistema como base. Logo, é importante que você atualize as ebuilds em seu sistema regularmente para que o Portage saiba sobre novo software, atualizações de segurança, etc...

Atualizando a árvore do Portage

A árvore do Portage é normalmente atualizada com o rsync, um programa rápido de transferência de arquivos incremental. Atualizar é simples, já que o comando emerge tem um front-end para o rsync:

Listagem de código 2.1: Atualizando a árvore do Portage

# emerge --sync

Se você não consegue fazer rsync devido a restrições de firewall, você ainda pode atualizar sua árvore do Portage usando nossos snapshots diários da árvore do Portage. A ferramenta emerge-webrsync baixa e instala o último snapshot em seu sistema automaticamente:

Listagem de código 2.2: Rodando emerge-webrsync

# emerge-webrsync

1.c. Mantendo software

Procurando software

Para procurar títulos de software na árvore do Portage, você pode usar as funções de procura incluídas no emerge. Por padrão, emerge --search retorna os nomes dos pacotes cujos títulos coincidem (inteiramente ou parcialmente) com o termo de procura.

Por exemplo, para procurar por todos pacotes que tenham "pdf" em seu nome:

Listagem de código 3.1: Procurando todos pacotes com nome contendo pdf

$ emerge --search pdf

Se você deseja pesquisar também as descrições você pode usar a opção --searchdesc (ou -S):

Listagem de código 3.2: Procurando pacotes relacionados a pdf

$ emerge --searchdesc pdf

Quando você vir a saída, você perceberá que ela dá muita informação a você. Os campos são claramente marcados para que nós não termos que adivinhar seus significados:

Listagem de código 3.3: Exemplo de saída de emerge --search

*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

Instalando software

Quando você encontrar um título de software de que você gosta, você pode instalá-lo facilmente com o emerge: simplesmente adicione o nome do pacote. Por exemplo, para instalar o gnumeric:

Listagem de código 3.4: Instalando o gnumeric

# emerge gnumeric

Já que muitas aplicações dependem uma da outra, qualquer tentativa de instalar um certo pacote pode resultar na instalação de várias dependências também. Não se preocupe, o Portage lida bem com dependências. Se você quiser descobrir o que o Portage instalaria quando você pedir para ele instalar um certo pacote, adicione a opção --pretend. Por exemplo:

Listagem de código 3.5: Fingir instalar o gnumeric

# emerge --pretend gnumeric

Quando você pede ao Portage para instalar um pacote, ele irá baixar o código fonte necessário da Internet (se necessário) e gravá-lo por padrão em /usr/portage/distfiles. Depois disso irá descompactar, compilar e instalar o pacote. Se você quiser que o Portage só baixe as fontes sem instalá-las, adicione a opção --fetchonly ao comando emerge:

Listagem de código 3.6: Baixando o código-fonte do gnumeric

# emerge --fetchonly gnumeric

Encontrando documentação instalada por pacotes

Muitos pacotes vêm com sua própria documentação. Às vezes, a opções de USE doc determina se documentação do pacote deve ser instalada ou não. Você pode verificar a existência de uma opção de USE doc com o comando emerge -vp <nome do pacote>.

Listagem de código 3.7: Verificando a existência de uma opção de USE doc

(alsa-lib é só um exemplo, claro.)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.9_rc3  +doc -jack 674 kB

Você pode ativar ou desativar a opção de USE doc tanto globalmente no arquivo /etc/make.conf como por pacote no arquivo /etc/portage/package.use. O capítulo Variáveis de USE cobre este aspecto com detalhe.

Uma vez o pacote instalado, sua documentação geralmente é encontrada em um subdiretório com o nome do pacote no diretório /usr/share/doc. Você também pode listar todos arquivos instalados com a ferramenta equery, que é parte do pacote app-portage/gentoolkit.

Listagem de código 3.8: Localizando documentação de pacote

# ls -l /usr/share/doc/alsa-lib-1.0.9_rc3
total 28
-rw-r--r--  1 root root  669 May 17 21:54 ChangeLog.gz
-rw-r--r--  1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x  2 root root 8560 May 17 21:54 html
-rw-r--r--  1 root root  196 May 17 21:54 TODO.gz

(Alternativamente, use equery para localizar arquivos interessantes:)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.9_rc3
* Contents of media-libs/alsa-lib-1.0.9_rc3:
/usr
/usr/bin
/usr/bin/alsalisp
(Saída trancada)

Removendo software

Quando você quiser remover um pacote de software de seu sistema, use emerge --unmerge. Isto dirá para o Portage remover todas arquivos instalados por aquele pacote de seu sistema exceto os arquivos de configuração da aplicação se você os alterou depois da instalação. Deixar os arquivos de configuração permite que você continue trabalhando com o pacote se você decidir que quer instalá-lo novamente.

Todavia, um grande aviso é aplicável: o Portage não irá verificar se o pacote que você quer remover é necessário para outro pacote. Ele irá, no entanto, avisar quando você quiser remover um pacote importante que quebraria seu sistema se você desinstalasse-lo.

Listagem de código 3.9: Removendo o gnumeric do sistema

# emerge --unmerge gnumeric

Quando você remove um pacote de seu sistema, as dependências do pacote que foram instaladas automaticamente são deixadas. Para que o Portage localize todas dependências que podem ser removidas agora, use a função --depclean do emerge. Nós iremos falar mais disso adiante.

Atualizando seu sistema

Para manter seu sistema em perfeita forma (e sem mencionar instalar as últimas atualizações de segurança) você precisa atualizar seu sistema regularmente. Uma vez que o Portage só verifica as ebuilds em sua árvore do Portage, você primeiro tem que atualizar sua árvore do Portage. Quando sua árvore do Portage é atualizada, você pode atualizar seu sistema com emerge --update world. No próximo exemplo, também usaremos a opção ask para dizer ao Portage para mostrar a lista de pacotes que ele quer atualizar e perguntar para você se você quer continuar:

Listagem de código 3.10: Atualizando seu sistema

# emerge --update --ask world

O Portage irá procurar novas versões das aplicações que você tem instaladas. Todavia, ele só irá verificar as versões das aplicações que você instalou explicitamente - não as dependências. Se você quiser atualizar todos pacotes em seu sistema, adicione o argumento --deep:

Listagem de código 3.11: Atualizando o sistema inteiro

# emerge --update --deep world

Já que atualizações de segurança também acontecem em pacotes que você não instalou explicitamente em seu sistema (mas que são puxados como dependências de outros programas), também é recomendado que você rode isto de vez em quando.

Se você alterou qualquer uma das suas variáveis de USE, você deve adicionar --newuse também. O Portage irá então verificar se a mudança necessita a instalação de novos pacotes ou recompilação dos instalados:

Listagem de código 3.12: Fazendo um update completo

# emerge --update --deep --newuse world

Meta pacotes

Alguns pacotes na árvore do Portage não têm nenhum conteúdo real, mas são usados para instalar uma coleção de pacotes. Por exemplo, o pacote kde irá instalar um ambiente KDE completo em seu sistema ao instalar os vários pacotes relacionados ao KDE como dependências.

Se você quiser remover um pacote desses de seu sistema, rodar emerge --unmerge neste pacote não terá muito efeito já que as dependências permanecem no sistema.

O Portage tem a funcionalidade de remover dependências órfãs também, mas já que a disponibilidade do software é dinamicamente dependente, você primeiro precisar atualizar seu sistema completamente, incluindo as novas mudanças que você fez quando mudou as opções de USE. Depois disso você pode rodar emerge --depclean para remover as dependências órfãs. Quando isso é feito, você precisa reconstruir as aplicações que foram linkadas dinamicamente aos títulos de software a que foram linkados dinamicamente mas que não são mais necessários.

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

Listagem de código 3.13: Removendo dependências órfãs

# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

O revdep-rebuild é fornecido pelo pacote gentoolkit; não se esqueça de instalá-lo primeiro:

Listagem de código 3.14: Instalando o pacote

# emerge gentoolkit

1.d. Quando o Portage estiver reclamando...

Sobre SLOTs, virtuals, branches, arquiteturas e profiles

Como dissemos antes, o Portage é extremamente poderoso e suporta muitas funções que outras ferramentas de gerenciamento de software não têm. Para entender isso, nós explicamos alguns dos aspectos do Portage sem entrar em muitos detalhes.

Com o Portage, as diferentes versões de um único pacote podem coexistir em um sistema. Enquanto outras distribuições costumam nomear os pacotes com as versões (como freetype e freetype2), o Portage usa uma tecnologia chamada SLOTs. Uma ebuild declara um certo SLOT para sua versão. Ebuilds com SLOTs diferentes podem coexistir em um mesmo sistema. Por exemplo, o pacote freetype tem ebuilds com SLOT="1" e SLOT="2".

Também existem pacotes que fornecem a mesma funcionalidade, mas que são implementados de maneira diferente. Por exemplo, metalogd, sysklogd e syslog-ng são todos loggers de sistema. Aplicações que dependem da disponibilidade de um "logger de sistema" não podem depender, por exemplo, do metalogd, já que outros loggers de sistema são tão bons quanto. O Portage permite o uso de virtuals: cada logger de sistema fornece a dependência virtual/syslog para que as aplicações possam depender de virtual/syslog.

O software na árvore do Portage pode residir em diferentes ramos. Por padrão seu sistema só aceita pacotes que o Gentoo considera estável. A maior parte dos títulos de software novos, quando colocados na árvore, são adicionados no ramo de testes, significando que mais testes devem ser feitos antes de serem marcados estáveis. Embora você veja as ebuilds deste software na árvore do Portage, o Portage não irá atualizá-los antes de serem colocados no ramo estável.

Alguns softwares só estão disponíveis para algumas arquiteturas. Ou o software não funciona em outras arquiteturas, ou precisa de mais testes, ou o desenvolvedor que colocou o software na árvore do Portage não pôde verificar se o pacote funciona em arquiteturas diferentes.

Cada instalação do Gentoo adere a um certo profile (perfil) que contém, entre outras informações, a lista de pacotes que são necessários para que um sistema funcione normalmente.

Pacotes bloqueados

Listagem de código 4.1: Aviso do Portage sobre pacotes bloqueados (com --pretend)

[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

Listagem de código 4.2: Aviso do Portage sobre pacotes bloqueados (sem --pretend)

!!! Error: the mail-mta/postfix package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers. 

As ebuilds contêm certos campos específicos que informam ao Portage sobre suas dependências. Existem duas dependências possíveis: dependências de construção, declaradas em DEPEND e dependências de execução, declaradas em RDEPEND. Quando uma dessas dependências marca um pacote ou virtual como sendo explicitamente não compatível, ele faz um bloqueio.

Para consertar um bloqueio, você pode escolher não instalar o pacote ou desinstalar o pacote conflituoso primeiro. No exemplo dado, você pode não instalar o postfix ou remover o ssmtp primeiro.

Também é possível que dois pacotes que ainda não foram instalados bloqueiem um ao outro. Neste caso raro, você deve descobrir por que você precisa instalar os dois. Na maior parte dos casos, você pode se satisfazer com um pacote. Se não, por favor relate um bug no Sistema de rastreamento de bugs do Gentoo.

Pacotes mascarados

Listagem de código 4.3: Aviso do Portage sobre pacotes mascarados

!!! all ebuilds that could satisfy "bootsplash" have been masked. 

Listagem de código 4.4: Aviso do Portage sobre pacotes mascarados - motivo

!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

Quando você quiser instalar um pacote que não está disponível em seu sistema, você receberá este erro de máscara. Você pode tentar instalar uma aplicação diferente que está disponível para seu sistema ou esperar até que o pacote fique disponível. Sempre existe um motivo para um pacote estar mascarado:

  • ~arch keyword significa que a aplicação não foi testada o suficiente para estar no ramo estável. Espere alguns dias ou semanas e tente novamente.
  • -arch keyword ou -* keyword significa que a aplicação não funciona em sua arquitetura. Se você acredita que o pacote funciona preencha um bug em nosso website do bugzilla.
  • missing keyword significa que a aplicação não foi testada na sua arquitetura ainda. Peça ao time de porting de arquiteturas que teste o pacote ou teste para eles e relate sua experiência em nosso website do bugzilla.
  • package.mask significa que o pacote está corrupto, instável ou pior e foi deliberadamente marcado como não usável.
  • profile significa que o pacote não é cabível a seu profile. A aplicação pode quebrar seu sistema se for instalada ou simplesmente não é compatível com o profile que você usa.

Dependências faltando

Listagem de código 4.5: Aviso do Portage sobre dependências faltando

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem. 

A aplicação que você está tentando instalar depende em um outro pacote que não está disponível para seu sistema. Veja no bugzilla se o problema é conhecido, e se não for, por favor relate-o. A menos que você esteja misturando ramos isso não deve acontecer e logo é um bug.

Nomes de ebuild ambíguos

Listagem de código 4.6: Aviso do Portage sobre nomes de ebuild ambíguos

!!! The short ebuild name "aterm" is ambiguous.  Please specify
!!! one of the following fully-qualified ebuild names instead:

    dev-libs/aterm
    x11-terms/aterm

A aplicação que você quer instalar tem um nome que corresponde a mais de um pacote. Você precisa dar a categoria também. O Portage irá informar você sobre as possíveis alternativas a se escolher.

Dependências circulares

Listagem de código 4.7: Aviso do Portage sobre dependências circulares

!!! Error: circular dependencies: 

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2 

Dois (ou mais) pacotes que você quer instalar dependem um do outro e logo não podem ser instalados. Isto é provavelmente um bug na árvore do Portage. Por favor sincronize depois de um tempo e tente novamente. Você também pode ver no bugzilla se o problema é conhecido, e se não for, relatá-lo.

Problema ao baixar arquivos

Listagem de código 4.8: Aviso do Portage sobre problema ao baixar arquivos

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

O Portage não conseguiu baixar as fontes para a aplicação dada e tentará continuar com as outras aplicações (se aplicável). Este problema pode ser devido a um servidor que não sincronizou corretamente ou porque a ebuild aponta para um local incorreto. O servidor onde residem as fontes também pode estar desligado por algum motivo.

Tente de novo uma hora depois para ver se o problema ainda persiste.

Proteção de sistema pelo profile

Listagem de código 4.9: Aviso do Portage sobre pacotes protegidos pelo profile

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

Você pediu para remover um pacote que é central para o seu sistema. Ele está listado em seu profile como necessário e não deve ser removido de seu sistema.


[ << ] [ < ] [ Início ] [ > ] [ >> ]


Imprimir

View all

Atualizado 26 de dezembro de 2005

A versão original deste documento foi atualizada em 18 de dezembro de 2013

Resumo: Este capítulo explica os "simples" passos que um usuário precisa fazer para cuidar do software em seu sistema.

Sven Vermeulen
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Desenvolvedor do Gentoo x86

Tavis Ormandy
Desenvolvedor do Gentoo Alpha

Jason Huebel
Desenvolvedor do Gentoo AMD64

Guy Martin
Desenvolvedor do Gentoo HPPA

Pieter Van den Abeele
Desenvolvedor do Gentoo PPC

Joe Kallar
Desenvolvedor do Gentoo SPARC

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Grant Goodyear
Revisor

Gerald J. Normandin Jr.
Revisor

Donnie Berkholz
Revisor

Ken Nowack
Revisor

Lars Weiler
Colaborador

Enderson Maia
Tradutor Responsável

Marcelo Góes
Tradutor

Eduardo Magalhães
Tradutor

Marcelo Azambuja
Tradutor

Marcos Vinicius Buzo
Tradutor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.