Localizando arquivos dentro de pacotes rpm

Publicado por loja iNotebooks em 13/10/2003

[ Hits: 11.136 ]

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

Comandos básicos para usar o shell

Apagando arquivos sem dono com o find

Super usuário no modo gráfico

Montando disquetes, CDROM e partições Windows

Trabalhando com permissões de arquivos

Leitura recomendada

Instalando a placa de som no VMware com o Debian 5 (lenny) como host

Como alterar a imagem de fundo do GRUB no Debian

Arch Linux: Otimizando o seu makepkg para sua arquiterura

Criando uma imagem Docker a partir de uma máquina virtual

OpenVZ Web Panel

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts