apt-get operações falham, devido à pesquisa inválida ld.so

2

Todas as minhas operações apt-get estão falhando, porque em algum lugar parece haver um arquivo chamando ld.so com um arquivo que não existe mais. Isso significa que não posso mais usar o apt-get para instalar ou atualizar minhas dependências!

Estou executando o Lubuntu 16.04.

Acredito que isso começou a ocorrer devido a uma atualização automática que ocorreu com o Nvidia CUDA. A partir da semana passada, comecei a ver esta linha aparecer no meu terminal depois de executar comandos que não têm nada a ver com o CUDA.

ERROR: ld.so: object '/usr/lib/nvidia-375/libnvidia-ml.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

Eu fui olhar para isso e descobri que o arquivo /usr/lib/nvidia-375/libnvidia-ml.so não existia no meu sistema, que em vez disso existia um libnvidia-ml.so arquivo em uma pasta que parecia ser uma atualização do mesmo pacote, / usr / lib / nvidia-382 .

Pensei que, com a reinicialização e algumas atualizações, esse problema desapareceria, mas hoje percebi que não posso mais executar a maioria dos comandos apt-get . Por exemplo, quando eu executo um comando install, recebo uma saída de log enorme, que inclui a linha acima centenas de vezes, e a instalação falha no final das contas.

Copiei e colei uma dessas saídas em uma essência (era muito grande para colocar dentro deste post). Este foi o resultado da saída de tentar executar sudo apt-get install vlc (mas falha de forma semelhante com qualquer instalação). link

Eu nem uso o CUDA atualmente, então isso é especialmente irritante. Uma das coisas que eu tentei foi desinstalar o nvidia-382. A própria desinstalação parece ter funcionado, e parece ter removido o CUDA 9 junto com ele, mas o problema ainda persiste.

O fato é que não tenho idéia do que o pacote ou arquivo continua pedindo por este arquivo não existente em / usr / lib / nvidia-375.

Alguém por favor pode ajudar?

Atualização de 2017-11-01

Parece que recebo este erro sempre que executo o comando sudo .

Eu tentei executar ldd /usr/bin/sudo e ldd /usr/bin/apt-get e nenhum deles listou esse arquivo Nvidia. Eu olhei na pasta /etc/ld.so.conf.d e encontrei um arquivo chamado cuda-9-0.conf , apesar do fato de que CUDA deveria ser removido . Então renomei para cuda-9-0.backup e executei sudo ldconfig .

Isso não corrigiu, ainda recebo a mensagem de erro em todos os comandos sudo .

Eu também decidi verificar o cache, e não tenho certeza se isso está apontando para o problema:

# sudo ldconfig -p | grep nvidia
ERROR: ld.so: object '/usr/lib/nvidia-375/libnvidia-ml.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
libnvidia-gtk3.so.384.81 (libc6,x86-64) => /usr/lib/libnvidia-gtk3.so.384.81
libnvidia-gtk2.so.384.81 (libc6,x86-64) => /usr/lib/libnvidia-gtk2.so.384.81
    
por edcarden 30.10.2017 / 20:29

3 respostas

1

Graças a resposta do @ muru e @ pbhj comentário para essa resposta, descobri que o problema era que a variável de ambiente LD_PRELOAD estava sendo definida para "/usr/lib/nvidia-375/libnvidia-ml.so" no arquivo /etc/environment .

Provavelmente adicionei a linha nesse arquivo há muito tempo, quando configurei o CUDA pela primeira vez. Eu estou supondo que isso foi um truque para um problema que eu estava tendo naquele momento, que exigia a configuração de LD_PRELOAD no nível sudo .

Como demonstrou @muru, é muito fácil reproduzir a mensagem de erro configurando a variável de ambiente LD_PRELOAD para um arquivo que não existe. Ainda assim, meus arquivos de inicialização do shell não o definiram e env | grep LD_PRELOAD não retornou nada.

No entanto, (graças ao comentário do @pbhj), descobri que, ao executar sudo apt-get update exibiria o erro uma tonelada de vezes na saída, sudo env -u LD_PRELOAD apt-get update apenas exibiu uma vez, no topo da saída. Então eu achei que sudo env | grep LD_PRELOAD mostrou que estava de fato configurado para o arquivo não existente, para sudo de comandos.

Além de /etc/environment , qualquer pessoa que tenha esse problema também deve consultar o arquivo /etc/sudoers (que você deve editar com sudo visudo ) e todos os arquivos da pasta /etc/sudoers.d/ .

    
por edcarden 08.11.2017 / 21:22
2

Você parece ter definido a variável de ambiente LD_PRELOAD em algum lugar:

$ /bin/true
$ export LD_PRELOAD=/usr/lib/nvidia-375/libnvidia-ml.so
$ /bin/true
ERROR: ld.so: object '/usr/lib/nvidia-375/libnvidia-ml.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

Eu sugiro que você verifique seus arquivos de inicialização do shell ( ~/.{bashrc,profile} , /etc/{bash.bashrc,profile,profile.d/*} ). Ou execute este comando:

PS4=' ${BASH_SOURCE}:${LINENO} ' bash -lixc exit |& grep LD_PRELOAD
    
por muru 06.11.2017 / 07:42
0

Você já tentou com:

dpkg-reconfigure nvidia-***

Isso pode resolver seu problema de reconfiguração e reinstalação, se necessário!

    
por Juanvy03 06.11.2017 / 18:14