Instalowanie sterowników NVIDIA w dniu 18.04

31

wszystko. Próbuję naprawić system, aby móc zainstalować sterowniki NVIDIA, ale z jakiegoś powodu wydaje się, że utknął. Próbowałem ręcznie usunąć pobrane pliki z

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

... aby umożliwić im ponowne pobranie, ale bezskutecznie. Czy ktoś próbował ostatnio zainstalować te sterowniki 18.04?

~$ 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
źródło
Spróbuj wyczyścić całą pamięć podręczną sudo apt-get cleani spróbuj ponownie.
Karl Richter
to sudo apt-get cleansamo wciąż się dla mnie dzieje
Pim Heijden

Odpowiedzi:

75

Znalazłem to polecenie na forach ubuntu, bardzo dobrze ze mną działało:

Biegać:

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

Pierwsze polecenie usunie wszystkie przekierowane pakiety z nvidia-340. Jeśli masz inną wersję „diverting” nvidii, zmień ją; przeczytaj kod błędu, aby dowiedzieć się, która wersja przekierowuje.

Źródło: https://ubuntuforums.org/showthread.php?t=2388026&p=13761809#post13761809 Kudos to stutteringp0et2 :)

Lucas Serafim
źródło
2
Jeśli nie używasz Ubuntu w języku angielskim, musisz zmienić numer awk '{print $3}'na inny, na przykład musiałem go zmienić na awk '{print $2}'. Lub możesz zmienić ustawienia regionalne na angielski ( for FILE in $(LANG=en dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done).
Petr R.
2
Uratowałeś mnie od mojej agonii, założyłem tutaj konto tylko po to, by głosować
Primusa
14

Oto pełna odpowiedź na innym forum

Podstawowym założeniem odpowiedzi jest:

  1. masz stare zależności, które chcesz usunąć
  2. chcesz posprzątać bałagan
  3. chcesz zainstalować nowy sterownik

Zakładam, że masz zainstalowany cr * p ze sterownika 340 - co było moim problemem

  1. usuń stare zależności

    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. czysty bałagan - w zależności od zainstalowanego bałaganu dowiedz się, jeśli nie działa od razu;)

    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. zainstaluj nowe zalecane sterowniki

    ubuntu-drivers devices
    nvidia-settings
    

Moja rada:
nie baw się ustawieniami w sterownikach cr * ppy tylko w celu sprawdzenia, czy są zainstalowane :)

Jake Grabowski
źródło
3
Proszę nie sugerować dpkg --force-allbez powodu! Napotkane aborcje po błędzie mają na celu ochronę integralności systemu zarządzania pakietami i nie należy ich tłumić bez namysłu i uwagi! -1
David Foerster
To działa. Muszę skomentować: wykryłem, że problem pojawia się, gdy używany jest ekran 4k - wtedy masz problemy z uruchomieniem. Jak
wykryłem: zainstaluj
Zrobiłem # 1, a potem sudo apt install -fi sudo apt upgrade. pracował
ICE
Dlaczego ta odpowiedź jest prawie taka sama jak odpowiedź Lucasa Serafima?
Pim Heijden
6

Rozwiązałem problem, usuwając przekierowanie nvidii-340. mam nadzieję, że nie muszę używać nvidia-340. Oto przykład:

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

Możesz kontynuować usuwanie, gdy masz konflikt.

youbaji
źródło
Wielkie dzięki! Na początku wygląda na to, że nie działa, ale jeśli będziemy nadal próbować i usuwać, ostatecznie to rozwiąże. Dzięki jeszcze raz.
Gaurav Gandhi
Wielkie dzięki! Nie mogłem obejść tego problemu, nie wiedząc, że mogę zmodyfikować listę dpkg-divert dla śmieci nvidia-340. You rock
Mikis
2

Uruchomiłbym apt auto-clean i sprawdziłbym, czy to, co myślę, jest popsutym pakietem.

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

edytuj: aby odpowiedzieć na twoje drugie pytanie, kiedy zainstalowałem 18.04, innego dnia 390 działało dobrze, ale przejście do 396 było trochę „zabawne”. Naprawiłem to dla mnie.

Andrew Schott
źródło
Wielkie dzięki. To jest tak daleko, jak mam: (Myślę, że mógłbym zrobić czystą ponowną instalację): ~ $ sudo apt upgrade Czytanie list pakietów ... Gotowe Budowanie drzewa zależności Odczytywanie informacji o stanie ... Gotowe Możesz chcieć uruchomić 'apt - -fix-broken install ', aby je poprawić. Następujące pakiety mają niespełnione zależności. libnvidia-ifr1-390: Zależy: libnvidia-gl-390, ale nie jest zainstalowany libnvidia-ifr1-390: i386: Zależy: libnvidia-gl-390: i386, ale nie jest zainstalowany nvidia-driver-390: Zależy: libnvidia- gl-390 (= 390.48-0ubuntu3), ale nie jest zainstalowany ....
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

Uruchom najpierw

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

Następnie zainstaluj go z ppa,

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

to działało dla mnie na Ubuntu 18.04 LTS

Vishwaprabhakar Singh
źródło
Sterownik nvidia-390 znajduje się w domyślnych repozytoriach Ubuntu 18.04, więc po co dodawać PPA?
karel