Gerenciando pacotes no Gentoo

Posted on jul 03, 2008 under Dicas Linux, Tutoriais | 7 Comentários

O gentoo possui um ótimo gerenciador de pacotes, diga-se de passagem foi um dos 5 motivos que me fez usa-lo. A idéia deste post é mostrar como gerenciar os pacotes instalados de forma simples.

Para gerenciar os pacotes os desenvolvedores do gentoo fizeram uma excelente ferramenta a Gentoolkit, com esta ferramenta conseguimos descobrir muita informação sobre os pacotes como por exemplo: tamanho do pacote instalado, integridade do pacote, descobrir a qual pacote um arquivo pertence, mostrar as dependências de um pacote, mostrar quais pacotes usam uma flag USE específica, calcular a dependência reversa, etc …
Existe um outro pacote que se chama portage-utils que também possui muitas ferramentas úteis para gerenciar pacotes o qual falarei em um próximo post.


Instalando o gentoolkit

emerge gentoolkit

Não poderia deixar de comentar, sobre uma ferramenta muito boa de usar que é o eix(Ebuild IndeX), essa ferramenta cria um banco de dados dos pacotes, agilizando a procura.

Instalando o eix

USE="sqlite" emerge eix

Após instalar podemos rodar o comando eix-sync para sincronizar o emerge e criar o index do eix.

O eix pode ser usado no lugar do comando emerge -s package ou emerge -S package a resposta será bem mais rápida a sintaxe é
eix package.

Vamos descobrindo todos os pacotes instalados, rode o seguinte comando:

 eix -I

Este comando mostra todos os pacotes instalados, as flags USE que foram usadas para instalar e se existe um update para o pacote.

Quero descobir a qual pacote pertence o arquivo ntlm_auth ?

equery belongs ntlm_auth
[ Searching for file(s) ntlm_auth in *... ]
net-fs/samba-3.0.28a (/usr/bin/ntlm_auth)
localhost ~ #

Descobrimos que o ntlm_auth pertence ao samba, podemos descobrir agora como está a integridade do pacote samba.

equery check samba
[ Checking net-fs/samba-3.0.28a ]
!!! /var/run/samba/.keep_net-fs_samba-0 does not exist
!!! /etc/samba/smb.conf.example has incorrect md5sum
 * 215 out of 217 files good

Olha só está dizendo que o smb.conf.example está com um md5 diferente, essa funcionalidade é ótima para encontrar rootkits, mas nesse caso fui eu que alterei o arquivo para ver se ele encontraria algo diferente.

O comando informou que o pacote samba tem 215 arquivos. Quais são eles ?

equery files samba
[ Searching for packages matching samba... ]
* Contents of net-fs/samba-3.0.28a:
/etc
/etc/conf.d
/etc/conf.d/samba
/etc/init.d
/etc/init.d/samba
/etc/pam.d
/etc/pam.d/samba
/etc/samba
/etc/samba/lmhosts
/etc/samba/smb.conf.example
/etc/samba/smbusers
/etc/xinetd.d
...
...
...

Mostrei somente uma parte dos arquivos, também podemos saber quais pacotes dependem do samba.

equery depends samba
[ Searching for packages depending on samba... ]
dev-libs/cyrus-sasl-2.1.22-r2 (ntlm_unsupported_patch? >=net-fs/samba-3.0.9)
gnome-base/gnome-vfs-2.22.0 (samba? >=net-fs/samba-3)
gnome-base/gvfs-0.2.4 (samba? >=net-fs/samba-3)
kde-base/kdebase-3.5.8-r6 (samba? >=net-fs/samba-3.0.4)
kde-base/kdebase-kioslaves-4.0.0 (samba? >=net-fs/samba-3.0.1)
media-libs/xine-lib-1.1.10.1-r1 (samba? net-fs/samba)
media-video/mplayer-1.0_rc2_p26753 (samba? net-fs/samba)
net-print/cups-1.3.7-r1 (samba? >=net-fs/samba-3.0.8)
localhost ~ #

Também pode-se mostrar a dependência direta e indireta

equery depgraph samba

Podemos descobrir o tamanho do pacote samba.

equery size samba
[ Searching for packages matching samba... ]
* size of net-fs/samba-3.0.28a
           Total files : 216
           Inaccessible files : 1
           Total size  : 49535.03 KiB

Seguindo quero saber quais pacotes estão compilados com a flag USE python.

equery uses python
[ Searching for packages matching python... ]
[ Colour Code : set unset ]
[ Legend : Left column  (U) - USE flags from make.conf              ]
[        : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for dev-lang/python-2.4.4-r7 ]
 U I
 + + berkdb       : Adds support for sys-libs/db (Berkeley DB for MySQL)
 - - bootstrap    : !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used during original system bootstrapping [make stage2]
 - - build        : !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used for creating build images and the first half of bootstrapping [make stage1]
 - - doc          : Adds extra documentation (API, Javadoc, etc)
 - - elibc_uclibc : 
 - - examples     : Install examples, usually source code
 + + gdbm         : Adds support for sys-libs/gdbm (GNU database libraries)
 + + ipv6         : Adds support for IP version 6
 + + ncurses      : Adds ncurses support (console display library)
 - - nocxx        : Disable support for C++ (DON'T USE THIS UNLESS YOU KNOW WHAT YOU'RE DOING)
 - - nothreads    : Disable threads (DON'T USE THIS UNLESS YOU KNOW WHAT YOU'RE DOING)

Finalmente vamos verificar se todos os pacotes que estão instalados no sistema estão com as dependências corretas. Iremos rodar o revdep-rebuild -p em modo pretend desta forma se encontrar algum pacote com uma dependência quebrada ele irá perguntar se desejamos instalar as dependências que estão faltando.

revdep-rebuild -p

Este post não cobre todas as possibilidades de gerenciamento dos pacotes no gentoo pretendo continuar em outros posts.

Referências

http://www.gentoo.org/doc/en/gentoolkit.xml
http://pt-br.gentoo-wiki.com/Equery
http://linuxreviews.org/gentoo/emerge/
http://vivaolinux.com.br/artigos/verArtigo.php?codigo=8440
http://www.linux.com/feature/56270
http://linuxtidbits.wordpress.com/2008/03/21/gentoo-helpful-tidbits/
http://www.gentoo.org/doc/en/portage-utils.xml

Caso tenha alguma dúvida, crítica ou sugestão deixe um comentário.

7 Responses to “Gerenciando pacotes no Gentoo”

  1. Petryx » Gerenciando pacotes no Gentoo…

    Conheça um pouco mais sobre gerenciamento de pacotes no gentoo, saiba como descobrir a que pacote um arquivo pertence, veja como estão as dependências dos pacotes, descubra os pacotes instalados e quais deles podem ser atualizados.
    Confira !!…

  2. [...] por Marlon Petry (marlonpetryΘgmail·com) – referência [...]

  3. Mauricio disse:

    Bah cara que legal esse artigo

    Parabéns continue escrevendo assim.

  4. Pablo disse:

    Olá em primeiro lugar parabéns pelo artigo

    Você já utilizou o portage-utils ?

  5. Marlon disse:

    Ola Pablo

    Muito obrigado.

    Eu já usei o portage-utils sim a maior diferença em relação ao gentoolkit é a velocidade na resposta. Porque ele é totalmente escrito em C.

  6. Frederico disse:

    Parabéns pelo post

    Vou assinar os feeds, gostei muito do teu blog.

  7. Alexandre disse:

    Começei a usar o gentoo a pouco tempo, esse post esclareceu as dúvidas que eu tinha.

Leave a Reply