Instalando drivers nvidia no 18.04

31

todos. Estou tentando consertar meu sistema para instalar os drivers da nvidia, mas parece que ele está travado por algum motivo. Tentei remover manualmente os arquivos baixados do

/var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_i386.deb
/var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_amd64.deb

... para permitir que eles baixem novamente, mas sem sucesso. Alguém já tentou instalar esses drivers no 18.04 ultimamente?

~$ sudo apt --fix-broken install
[sudo] password for jarl: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  lib32gcc1 libc6-i386
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libnvidia-gl-390 libnvidia-gl-390:i386
The following NEW packages will be installed
  libnvidia-gl-390 libnvidia-gl-390:i386
0 to upgrade, 2 to newly install, 0 to remove and 4 not to upgrade.
3 not fully installed or removed.
Need to get 0 B/29,1 MB of archives.
After this operation, 147 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 214344 files and directories currently installed.)
Preparing to unpack .../libnvidia-gl-390_390.48-0ubuntu3_i386.deb ...
diversion of /usr/lib/i386-linux-gnu/libGL.so.1 to /usr/lib/i386-linux-gnu/libGL.so.1.distrib by nvidia-340
dpkg-divert: error: mismatch on package
  when removing 'diversion of /usr/lib/i386-linux-gnu/libGL.so.1 by libnvidia-gl-390'
  found 'diversion of /usr/lib/i386-linux-gnu/libGL.so.1 to /usr/lib/i386-linux-gnu/libGL.so.1.distrib by nvidia-340'
dpkg: error processing archive /var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_i386.deb (--unpack):
 new libnvidia-gl-390:i386 package pre-installation script subprocess returned error exit status 2
Preparing to unpack .../libnvidia-gl-390_390.48-0ubuntu3_amd64.deb ...
diversion of /usr/lib/x86_64-linux-gnu/libGL.so.1 to /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib by nvidia-340
dpkg-divert: error: mismatch on package
  when removing 'diversion of /usr/lib/x86_64-linux-gnu/libGL.so.1 by libnvidia-gl-390'
  found 'diversion of /usr/lib/x86_64-linux-gnu/libGL.so.1 to /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib by nvidia-340'
dpkg: error processing archive /var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_amd64.deb (--unpack):
 new libnvidia-gl-390:amd64 package pre-installation script subprocess returned error exit status 2
Errors were encountered while processing:
 /var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_i386.deb
 /var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Jarl Arntzen
fonte
Tente limpar todo o cache sudo apt-get cleane tente novamente.
Karl Richter
depois que a sudo apt-get cleanmesma coisa ainda acontece para mim
Pim Heijden

Respostas:

75

Encontrei este comando nos fóruns do ubuntu, funcionou muito bem comigo:

Corre:

LC_MESSAGES=C dpkg-divert --list '*nvidia-340*' | sed -nre 's/^diversion of (.*) to .*/\1/p' | xargs -rd'\n' -n1 -- sudo dpkg-divert --remove
sudo apt --fix-broken install

O primeiro comando removerá todos os pacotes desviados nvidia-340. Se você tiver outra versão da nvidia "desviando", altere-a; leia o código de erro para saber qual versão está desviando.

Fonte: https://ubuntuforums.org/showthread.php?t=2388026&p=13761809#post13761809 parabéns a stutteringp0et2 :)

Lucas Serafim
fonte
2
Se você não usa o Ubuntu em inglês, há uma alteração na qual você precisará alterar o número awk '{print $3}'para outra coisa, por exemplo, tive que alterá-lo para awk '{print $2}'. Ou você pode alterar o código do idioma para inglês ( for FILE in $(LANG=en dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done).
172618 Petr R.
2
Você me salvou da minha agonia, eu fiz uma conta aqui apenas para
votar
14

Aqui está a resposta completa em outro fórum

A premissa básica da resposta é:

  1. você tem dependências antigas que deseja remover
  2. você quer limpar a bagunça
  3. você quer instalar um novo driver

Suponho que você tenha cr * p do driver 340 instalado - o que foi meu problema

  1. remover dependências antigas

    LC_MESSAGES=C dpkg-divert --list '*nvidia-340*' | sed -nre 's/^diversion of (.*) to .*/\1/p' | xargs -rd'\n' -n1 -- sudo dpkg-divert --remove
  2. bagunça limpa - dependendo da bagunça que você instalou, descubra se não funciona imediatamente;)

    sudo dpkg --force-all -P nvidia-390 nvidia-compute-utils-390 nvidia-dkms-390 nvidia-prime nvidia-settings nvidia-opencl-icd-340 nvidia-opencl-icd-384 nvidia-kernel-source-390 nvidia-kernel-common-390 libnvidia-cfg1-390 libnvidia-common-390 libnvidia-compute-390 libnvidia-decode-390 libnvidia-encode-390  libnvidia-fbc1-390 libnvidia-ifr1-390
    sudo apt purge --autoremove '*nvidia*'
    sudo apt-get update
    sudo apt-get upgrade
    
  3. instalar novos drivers recomendados

    ubuntu-drivers devices
    nvidia-settings
    

Meu conselho é:
não brinque com as configurações deste driver cr * ppy apenas para verificar se está instalado :)

Jake Grabowski
fonte
3
Por favor, não sugira dpkg --force-allsem um bom motivo! Os abortos encontrados por erro destinam-se a proteger a integridade do sistema de gerenciamento de pacotes e não devem ser suprimidos sem pensamento ou cuidado! -1
David Foerster
Isso funciona. Devo comentar: eu detectei que esse problema surge quando a tela 4k é usada - então você tem problemas de inicialização. Como i detectado: reconecte monitor antigo e inicializado facilmente
Vic Nicethemer
Eu fiz # 1 e depois sudo apt install -fe sudo apt upgrade. trabalhou.
ICE
Por que essa resposta é quase a mesma que a de Lucas Serafim?
Pim Heijden
6

Resolvi o problema removendo o desvio da nvidia-340. espero que eu não precise usar nvidia-340. A seguir, um exemplo:

dpkg-divert --package nvidia-340 --remove /usr/lib/i386-linux-gnu/libGL.so.1

Você pode continuar removendo sempre que tiver um conflito.

youbaji
fonte
Muito obrigado! No início, parece que não está funcionando, mas se continuarmos tentando e removendo, eventualmente isso será resolvido. Obrigado novamente.
Gaurav Gandhi
Muito obrigado! Não pude resolver esse problema sem saber que era possível modificar a lista dpkg-desviar do lixo eletrônico nvidia-340. Você rock
Mikis
2

Eu rodaria o apt auto-clean e veria se é o que eu acho que é, um pacote bagunçado.

sudo apt auto-clean
sudo apt update
sudo apt upgrade
sudo apt install nvidia-driver-390 libvulkan1

edit: para responder sua outra pergunta, quando instalei o 18.04 no outro dia, 390 funcionou bem, mas ir para o 396 foi um pouco "divertido". Isso consertou para mim.

Andrew Schott
fonte
Muito obrigado. Isto é o máximo que eu consegui .: (acho que posso fazer uma reinstalação limpa): ~ $ sudo apt upgrade Lendo listas de pacotes ... Concluído Criando árvore de dependência Lendo informações de estado ... Concluído Você pode querer executar 'apt - -fix-broken install 'para corrigi-los. Os seguintes pacotes têm dependências não atendidas. libnvidia-ifr1-390: Depende: libnvidia-gl-390, mas não está instalado libnvidia-ifr1-390: i386: Depende: libnvidia-gl-390: i386, mas não está instalado nvidia-driver-390: Depende: libnvidia- gl-390 (= 390.48-0ubuntu3), mas ele não está instalado ....
Jarl Arntzen
... Recommends: libnvidia-gl-390:i386 (= 390.48-0ubuntu3) E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
Jarl Arntzen
1

Execute isso primeiro,

Solução #for FILE in $(dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done

Em seguida, instale-o no ppa,

sudo add-apt-repository ppa:graphics-drivers/ppa 
sudo apt update 
sudo apt install nvidia-390

isso funcionou para mim no Ubuntu 18.04 LTS

Vishwaprabhakar Singh
fonte
O nvidia-driver-390 está nos repositórios padrão do Ubuntu 18.04, então qual é o objetivo de adicionar um PPA?
karel