Autor Tópico: Restaurar /usr/bin/ld  (Lida 3991 vezes)

lgoulart

  • Visitante
Restaurar /usr/bin/ld
« Online: 19 de Dezembro de 2006, 21:48 »
Pessoal,

apesar de ter começado no Ubuntu à 2 dias, já consegui fazer uma besteira mestre !

Eu fui mover um arquivo e acabei sobrescrevendo o arquivo :

Código: [Selecionar]
sudo mv arquivo /usr/bin/ld
o gcc ao realizar a linkedição passou a acusar falha de segmentação

Um amigo meu que usa Ubuntu tentou me ajudar me enviando o ld da máquina dele mas não funcionou, agora o erro acusado é 'ld' não encontrado

Alguma idéia de como resolver este problema ??

Grato,
Lgoulart

Offline embryo

  • Usuário Ubuntu
  • *
  • Mensagens: 22
    • Ver perfil
Re: Restaurar /usr/bin/ld
« Resposta #1 Online: 19 de Dezembro de 2006, 22:41 »
O ld é instalado pelo pacote binutils. Mas desinstalar e instalar novamente esse pacote seria um tanto problemático, porque você teria que desinstalar também vários outros pacotes que dependem do binutils. Você pode tentar isso:

1 - Veja onde o pacote se encontra nos repositórios:

Código: [Selecionar]
apt-cache show binutils | grep Filename
Compare com a versão que você está usando:

Código: [Selecionar]
dpkg -l | grep binutils | head -n 1
Se as versões forem as mesmas, prossiga.

2 - Pegue o endereço do pacote ( aqui no Ubunu Dapper é pool/main/b/binutils/binutils_2.16.1cvs20060117-1ubuntu2.1_i386.deb ) e junte com o endereço do repositório oficial do Ubuntu ( http://archive.ubuntu.com/ubuntu ). Ficaria algo assim: http://archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_2.16.1cvs20060117-1ubuntu2.1_i386.deb

3 - Baixe esse arquivo e descompacte ele:

Código: [Selecionar]
cd /tmp
wget http://archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_versão_que_você_está_usando.deb
dpkg -x binutils_versão_que_você_está_usando.deb .

4 - Será criado um diretório chamado usr, com o conteúdo do pacote. Agora copie o ld:

Código: [Selecionar]
cd usr/bin
sudo cp ld /usr/bin/ld

5 - Veja se funciona :)

Se as vesões não forem iguais no passo 1, então seu sistema não está atualizado. Um simples

Código: [Selecionar]
sudo apt-get install binutils
deve instalar a versão mais nova do pacote e resolver o seu problema.
« Última modificação: 19 de Dezembro de 2006, 22:44 por embryo »

lgoulart

  • Visitante
Re: Restaurar /usr/bin/ld
« Resposta #2 Online: 20 de Dezembro de 2006, 00:22 »
 ::) Que alívio. A versão dos dois pacotes era a mesma e o gcc está funcionando corretamente. Muito obrigado embryo !!!!

Só mais uma pergunta: existe uma maneira de descobrir a qual pacote um aplicativo pertence ? Por exemplo, neste caso teria como saber a qual pacote o lb pertence?

Até mais ...

Offline embryo

  • Usuário Ubuntu
  • *
  • Mensagens: 22
    • Ver perfil
Re: Restaurar /usr/bin/ld
« Resposta #3 Online: 20 de Dezembro de 2006, 01:08 »
De nada, cara. Existe sim um jeito de fazer o que vc quer. É o aplicativo apt-file. Você pode instalar ele pelo apt-get mesmo:

Código: [Selecionar]
sudo apt-get install apt-file
Depois faça:

Código: [Selecionar]
sudo apt-file update
Essa operação pode demorar um pouco. Quando terminar, é só fazer:

Código: [Selecionar]
apt-file search nome_do_arquivo
para saber em qual pacote o arquivo está contido. Por exemplo,

Código: [Selecionar]
apt-file search /usr/bin/gedit
retorna:

Código: [Selecionar]
gedit: usr/bin/gedit
que significa que para ter o arquivo /usr/bin/gedit, é necessário instalar o pacote chamado gedit.

Esse apt-file é uma ferramenta muito útil, e ao meu ver pouco comentada. Acho que merece um tutorial.

lgoulart

  • Visitante
Re: Restaurar /usr/bin/ld
« Resposta #4 Online: 20 de Dezembro de 2006, 14:47 »
 ;D Funcionou perfeitamente aqui no meu computador !!! Muito obrigado !!!

Offline Xterminator

  • Usuário Ubuntu
  • *
  • Mensagens: 1.279
    • Ver perfil
Re: Restaurar /usr/bin/ld
« Resposta #5 Online: 20 de Dezembro de 2006, 15:08 »
Aff e ninguém usa a opção reinstall do apt e synaptic? esta opção recolocaria o arquivo original no lugar.
acho que arrumaria o problema, você também poderia pegar o pacote binutils do CD de instalação
abri-lo com o file-roller e copiar o arquivo para o diretório correto, logicamente precisaria de poderes de superusuário.