Instalación de controladores nvidia en 18.04


31

todos. Estoy tratando de arreglar mi sistema para poder instalar los controladores de nvidia, pero parece que se atasca por alguna razón. He intentado eliminar manualmente los archivos descargados de

/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 que puedan volver a descargarse, pero fue en vano. ¿Alguien ha intentado instalar esos controladores en 18.04 últimamente?

~$ 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)

Intente limpiar todo el caché sudo apt-get cleane intente nuevamente.
Karl Richter

después de lo sudo apt-get cleanmismo todavía me pasa a mí
Pim Heijden

Respuestas:


75

Encontré este comando en los foros de ubuntu, funcionó muy bien conmigo:

Correr:

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

El primer comando eliminará todos los paquetes desviados nvidia-340. Si tiene otra versión de nvidia "desviando" cámbiela; lea el código de error para saber qué versión se está desviando.

Fuente: https://ubuntuforums.org/showthread.php?t=2388026&p=13761809#post13761809 felicitaciones a stutteringp0et2 :)


2
Si no usa Ubuntu en inglés, hay un cambio en el que tendrá que cambiar el número awk '{print $3}'a otro, por ejemplo, tuve que cambiarlo awk '{print $2}'. O puede cambiar la configuración regional a inglés ( for FILE in $(LANG=en dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done).
Petr R.

2
Me has salvado de mi agonía, he creado una cuenta aquí solo para
votar

14

Aquí está la respuesta completa en otro foro.

La premisa básica de la respuesta es:

  1. tiene dependencias antiguas que desea eliminar
  2. quieres limpiar el desorden
  3. desea instalar un nuevo controlador

Supongo que tiene cr * p del controlador 340 instalado, que fue mi problema

  1. eliminar dependencias antiguas

    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. Desorden limpio: dependía del desorden que haya instalado, descúbralo si no funciona de inmediato;)

    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 nuevos controladores recomendados

    ubuntu-drivers devices
    nvidia-settings
    

Mi consejo es:
no juegues con la configuración de este controlador cr * ppy solo para verificar si está instalado :)


3
Por favor, no sugiera dpkg --force-allsin una buena razón! ¡Los abortos encontrados por error están destinados a proteger la integridad del sistema de administración de paquetes y no deben suprimirse sin pensarlo ni preocuparse! -1
David Foerster

Esto funciona. Debo comentar: detecté que el problema surge cuando se usa la pantalla 4k, entonces tienes un problema de arranque. Cómo detecté: vuelva a enchufar el monitor viejo y se inició fácilmente
Vic Nicethemer

Hice el # 1 y luego sudo apt install -fy sudo apt upgrade. trabajó.
ICE

¿Por qué esta respuesta es casi la misma que la respuesta de Lucas Serafim?
Pim Heijden

6

Resolví el problema eliminando el desvío de nvidia-340. con suerte no necesito usar nvidia-340. El siguiente es un ejemplo:

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

Puede seguir eliminando cada vez que tenga un conflicto.


¡Gracias una tonelada! Al principio, parece que no funciona, pero si seguimos intentando y eliminando, eventualmente se resuelve. Gracias de nuevo.
Gaurav Gandhi

¡Muchas gracias! No pude superar este problema sin saber que podía modificar la lista dpkg-divert para la basura nvidia-340. Tu rock
Mikis

2

Ejecutaría apt auto-clean y vería si es lo que creo que es, un paquete desordenado.

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

editar: para responder a su otra pregunta, cuando instalé 18.04 el otro día 390 funcionó bien, pero ir a 396 fue un poco "divertido". Esto me lo arregló.


Muchas gracias. Hasta aquí llegué: (creo que podría hacer una reinstalación limpia): ~ $ sudo apt upgrade Lectura de listas de paquetes ... Listo Creación del árbol de dependencias Lectura de información de estado ... Listo Es posible que desee ejecutar 'apt - -fix-broken install 'para corregirlos. Los siguientes paquetes tienen dependencias insatisfechas. libnvidia-ifr1-390: depende: libnvidia-gl-390 pero no está instalado libnvidia-ifr1-390: i386: depende: libnvidia-gl-390: i386 pero no está instalado nvidia-driver-390: depende: libnvidia- gl-390 (= 390.48-0ubuntu3) pero no 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

Ejecuta esto primero,

Solución #for FILE in $(dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done

Luego instálalo desde ppa,

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

esto funcionó para mí en Ubuntu 18.04 LTS


El nvidia-driver-390 está en los repositorios predeterminados de Ubuntu 18.04, entonces, ¿cuál es el punto de agregar un PPA?
karel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.