[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: DICA: Links simbólicos inválidos



Duas últimas observações...

recomendo que o script seja executado como root por conta de um usuário comum não poder acessar certos diretórios e por fim, caso deseje eliminar os symlinks encontrados, não é tão necessário dar cabo daqueles localizados em /dev a não ser que tenha certeza do que está fazendo. É muito útil por exemplo manter um link chamado "modem" apontando para um modem portátil que quando plugado fique como /dev/ttyX, facilitando o uso de programas de discagem etc., mas removendo tal dispositivo o link parecerá inválido ;)

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


Em Sex, 2009-02-06 às 10:03 -0300, Klebson Porfirio escreveu:
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-user@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: klebsonp@gmail.com - Jabber: klebson@jabber.org
Usuário Linux #481658                       GnuPG-Key ID: 1F293FA6
----------------------------------------------------------------------------------------------
{DEBIAN[GNU(LINUX)]}5.0

Attachment: signature.asc
Description: Esta =?ISO-8859-1?Q?=E9?= uma parte de mensagem assinada digitalmente


Reply to: