Hoje me deparei com um problema um tanto recorrente àqueles que, como
eu, costumam instalar muitas aplicações a partir dos fontes (mas não se
limita a estes casos) para testar novos programas ou por pura
curiosidade. O problema ao qual me refiro é a grande quantidade de links
simbólicos que por um motivo ou outro não são excluídos após a
desinstalação dos programas e que muitas vezes acabam fazendo com que
dada tarefa a ser realizada ou seja impossibilitada ou retorne algo
inesperado ao usuário. No meu caso em específico o problema nem surgiu
por conta de aplicações instaladas a partir do código fonte e sim pela
remoção incompleta de pacotes DEB de aplicações que não mais uso. Vamos
ao fato.

Logo após fazer a substituição do Etch pelo Lenny, resolvi testar o
navegador Galeon por algumas semanas, feito isso, para economizar
precisos bytes de um HD de 40Gb resolvi remove-lo e ficar apenas com o
Iceweasel. Ontem, ao instalar o pacote debian-reference, que contem o
Guia de Referencias para um bom uso e o entendimento do Debian, me
deparei com algo inusitado, ao invés das páginas do guia abrirem no meu
navegador web, elas apareceram em um navegador somente texto (o Lynx) no
terminal do Gnome; não que isto seja um problema, mas eu não abro mão da
comodidade de poder navegar com auxílio de um mouse e ter uma boa
visibilidade das tabelas e caixas inclusas no guia. Verifiquei que o
comando que roda o debian-reference é um script de mesmo nome localizado
em /usr/bin e o mesmo executa um segundo script nesta pasta chamado
sensible-browser. Entre as linhas deste segundo script percebi que há
uma seqüencia para abrir o browser padrão do sistema, sendo estes
"gnome-www-browser", "x-www-browser" e "www-browser", este ultimo aberto
pelo terminal do gnome. Os três são links simbólicos presentes e
apontando para bináros em /usr/bin, no entanto, como os dois primeiros
estavam apontando para o Galeon (que não estava instalado), o script
executava o "/usr/bin/www-browser" fazendo com que fosse aberto o Lynx
no terminal.

Daí fui tentar procurar uma forma de descobrir onde e quais são todos os
symlinks inválidos no sistema; não conseguindo encontrar nada em
português resolvi procurar em inglês e achei o link de uma mensagem
antiga em
http://www.mail-archive.com/gentoo-u...@gentoo.org/msg29645.html no qual
um usuário sugeriu o seguinte script para facilitar este trabalho:
.
#!/bin/sh
for f in $(find / ! -fstype proc -type l 2>/dev/null); do
  cd `dirname "$f"` 2>/dev/null
  if [ ! -e `readlink "$f"` ]; then
    echo $f
  fi
done


Salve e dê permissões de execução:
chmod a+x nome_do_script

Execute:
./nome_do_script

Após a finalização, observe a quantidade de links inválidos encontrados
e decida o que fazer com os mesmos. No meu caso, foram encontrados 281 e
eles já estão visitando Zeus no Olimpo :p

Espero que isto possa servir para outras situações e exemplos.
Abraços.


Klebson Porfirio                                               DCE-UFAL
2009
E-mail/MSN: klebs...@gmail.com - Jabber: kleb...@jabber.org
Usuário Linux #481658                       GnuPG-Key ID: 1F293FA6
----------------------------------------------------------------------------------------------
{DEBIAN[GNU(LINUX)]}5.0

Attachment: signature.asc
Description: Esta é uma parte de mensagem assinada digitalmente

Responder a