Localizando arquivos dentro de pacotes rpm

Publicado por loja iNotebooks em 13/10/2003

[ Hits: 13.353 ]

Blog: http://loja.inotebooks.com.br

 


Localizando arquivos dentro de pacotes rpm



Dado ao fato da grande quantidade de novos usuários que sempre perguntam sobre arquivos que estão faltando nos seus sistemas e geralmente fazem perguntas como estas:
  • Aonde eu acho o arquivo *.*.so?
  • Em qual rpm está o arquivo lib***
  • Etc, etc.

Então aqui está a solução para sistemas baseados em arquitetura rpm, como a Conectiva, RedHat, Mandrake, etc.

Instalação


Abra o seu editor de texto preferido e copie todo o texto abaixo, como eu utilizo o vi seria vi proar, proar significa "procura em arquivos rpm".

#!/bin/sh
# rpmgrind: (greps/finds things in rpms)
# usage: cd dir_w_rpms; rpmgrind word

word=$1

for rpm in *.rpm; do
rpm -qlp ${rpm} | grep -qs ${word}
if [ "$?" != 1 ]; then
echo ${rpm}
fi
done

Copie o arquivo criado para /usr/bin cp proar /usr/bin e depois mude a permissão para 755 para que todos possam usar:

$ chmod 755 /usr/bin/proar

Agora se você precisar encontrar algum arquivo que esteja dentro de algum pacote rpm, basta que você monte o cd-rom, mount /mnt/cdrom e entre dentro do diretório aonde se encontra os pacotes rpm. No Conectiva é /mnt/cdrom/conectiva/RPMS, no RedHat é /mnt/cdrom/RedHat/RPMS.

Vamos supor que você esteja procurando o arquivo libtermcap.a que não está instalado no seu sistema, então você faz o seguinte comando no seu console:

$ proar libtermcap.a

Depois de algum tempo, o programa vai retornar:

libtermcap-devel-2.0.8-18cl.rpm

Agora basta que você instale o libtermcap-devel-2.0.8-18cl.rpm e supra a dependência do arquivo que você estava precisando. O script não serve somente para procurar libs, mas programas também. Se ele não localizar nada, quer dizer que você não tem o pacote com tal arquivo.

Um exemplo


Instalamos o Conectiva 8.0 (instalação padrão) e resolvemos instalar o tocador de mp3, Xmms (http://www.xmms.org/) versão 1.2.7, manualmente no nosso sistema e alguns erros estranhos relacionados ao GTK começaram a aparecer.

Depois de ter verificado que tal componente estava instalado, incluindo o pacote devel, o ./configure terminava com um erro de que tal componente não estaria instalado, como mostra o exemplo:

[...]
checking for gtk-config... /usr/bin/gtk-config
checking for GTK - version >= 1.2.2... no
*** Could not run GTK test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GTK was incorrectly installed
*** or that you have moved GTK since it was installed. In the latter case, you
*** may want to edit the gtk-config script: /usr/bin/gtk-config
configure: error: *** GTK+ >= 1.2.2 not installed - please install first ***
[...]

Creio que muitos se deparam com tal erro, neste caso se todas as possibilidades foram analisadas, que é verificar se tal pacote foi ou não instalado (incluindo o devel), resta agora analisar o arquivo config.log, que se encontra no mesmo diretório do programa que foi feito o ./configure.

O que eu faço é procurar pela função ou programa que gerou o erro, neste caso foi o GTK que o ./configure diz não estar instalado:

vi config.log
/gtk
[...]
configure:6118: checking for gtk-config
configure:6153: checking for GTK - version >= 1.2.2
configure:6254: gcc -o conftest -g -O2 -I/usr/include/gtk-1.2
-I/usr/include/glib-1.2 -I/usr/lib/glib/include -D_REENTRANT
-I/usr/X11R6/include conftest.c -L/usr/lib -L/usr/X11R6/lib -lgtk
-lgdk -rdynamic -lgmodule -lgthread -lglib -lpthread -ldl -lXext -lX11
-lm 1>&5
/usr/bin/ld: cannot find -lXext
collect2: ld returned 1 exit status
configure: failed program was:
#line 6176 "configure"
#include "confdefs.h"
[...]

Como mostrou o log não foi encontrado um tal de -lXext, que geralmente se refere ao arquivo (isso nem sempre é verdadeiro) libXext.so. Agora com o proar vamos encontrar este arquivo que falta, procurando no cd1 do Conectiva 8.0 e fazendo o seguinte comando:

# proar Xext
XFree86-devel-4.2.0-20cl.i386.rpm
XFree86-libs-common-4.2.0-20cl.i386.rpm
mozilla-0.9.8-4cl.i386.rpm

Foram encontrados três possibilidades, como nós já sabemos que procuramos por um arquivo semelhante com o nome libXext.so ou libXext, basta agora analisar cada arquivo listado com o comando:

# rpm -qpl XFree86-devel-4.2.0-20cl.i386.rpm |grep Xext
/usr/X11R6/include/X11/extensions/Xext.h
/usr/X11R6/include/X11/extensions/panoramiXext.h
/usr/X11R6/lib/libXext.so <--- BINGO!!!!

Achamos na primeira, agora basta instalar e verificar que o Xmms não acuse mais o erro de que o GTK não está instalado.

Outras dicas deste autor

Compactando arquivos no Linux

Configurando o vídeo com o Xconfigurator

Super usuário no modo gráfico

Como remover os pacotes rpm

Apagando arquivos sem dono com o find

Leitura recomendada

Criando bibliotecas (shared library) *.so

Criando GIFs animadas pelo terminal GNU/Linux

Customizando o Grub no Fedora 33

Quebrando senhas de arquivos ZIP

Acompanhando o log do servidor de e-mail

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts