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 |
# 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
# 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
|
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 ]
[ > ]
[ >> ]
O conteúdo deste documento está licenciado pela licença Creative Commons -
Attribution / Share Alike.
|