Встановлення драйверів nvidia 18.04


31

всі. Я намагаюся виправити свою систему, щоб я міг встановити драйвери nvidia, але, здається, чомусь застряг. Я спробував вручну видалити завантажені файли з

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

... для того, щоб вони знову завантажили, але безрезультатно. Хтось намагався встановити ці драйвери 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)

Спробуйте очистити весь кеш sudo apt-get cleanі спробуйте ще раз.
Карл Ріхтер

після sudo apt-get cleanтого, як у мене все ще трапляється
Пім Хайден

Відповіді:


75

Знайшов цю команду на форумах ubuntu, дуже добре працював зі мною:

Виконати:

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

Перша команда видалить усі перенаправлені пакети з nvidia-340. Якщо у вас є інша версія nvidia, "переадресація", змініть її; прочитайте код помилки, щоб дізнатися, яка версія відволікається.

Джерело: https://ubuntuforums.org/showthread.php?t=2388026&p=13761809#post13761809 kudos to stutteringp0et2 :)


2
Якщо ви не використовуєте Ubuntu англійською мовою, вам доведеться змінити номер awk '{print $3}'на щось інше, наприклад, мені довелося його змінити awk '{print $2}'. Або ви можете змінити локаль на англійський ( for FILE in $(LANG=en dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done).
Петро Р.

2
Ти врятував мене від моєї агонії, я зареєструвався тут лише для того, щоб підтвердити
Примуса

14

Ось повну відповідь на іншому форумі

Основна передумова відповіді:

  1. у вас є старі залежності, які ви хочете усунути
  2. ти хочеш очистити безлад
  3. Ви хочете встановити новий драйвер

Я припускаю, що у вас встановлено cr * p від встановленого драйвера 340 - це була моя проблема

  1. зняти старі залежності

    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. чистий безлад - залежно від безладу, який ви встановили, дізнаєтесь, чи не вийшло з коробки;)

    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. встановити нові рекомендовані драйвери

    ubuntu-drivers devices
    nvidia-settings
    

Моя порада:
не грайте з налаштуваннями у цьому драйвері cr * ppy лише для перевірки, чи встановлено :)


3
Будь ласка, не пропонуйте dpkg --force-allбез поважних причин! Зупинені переривання помилок мають на меті захистити цілісність системи управління пакунками, і їх не слід придушувати без думки та обережності! -1
Девід Фоерстер

Це працює. Я повинен прокоментувати: я виявив, що проблема виникає, коли використовується 4k дисплей - тоді у вас є проблеми із завантаженням. Як я виявив: відключіть старий монітор, і він легко завантажився
Вік Нікетемер

Я зробив №1, а потім sudo apt install -fі sudo apt upgrade. працювали.
ДВС

Чому ця відповідь майже така сама, як відповідь Лукаса Серафіма?
Пім Хайден

6

Я вирішив проблему, видаливши переадресацію nvidia-340. сподіваюся, мені не потрібно користуватися nvidia-340. Наведемо приклад:

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

Ви можете продовжувати видаляти, коли у вас виник конфлікт.


Дякую тонну! Спочатку здається, що це не працює, але якщо ми продовжуємо намагатися і видаляти, з часом це вирішується. Знову дякую.
Гаурав Ганді

Величезне спасибі! Я не міг подолати цю проблему, не знаючи, що я можу змінити список перенаправлення dpkg для nvidia-340 сміття. Ви рок
Мікіс

2

Я б запустив влучну автоматичну чистку і побачив, чи є її те, що я вважаю, заплутаним пакетом.

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

редагувати: щоб відповісти на ваше інше питання, коли я встановив 18.04, на днях 390 працював нормально, але перехід на 396 було трохи "цікаво". Це зафіксувало це для мене.


Дуже дякую. Це, наскільки я отримав .: (Я думаю, що я можу зробити чисту перевстановку): ~ $ sudo apt оновлення Читання списків пакетів ... Готово дерево залежності залежності Читання інформації про стан ... Готово Ви можете запустити 'apt - "виправлена ​​помилка встановлення", щоб виправити ці. Наступні пакети мають невиконані залежності. libnvidia-ifr1-390: Залежить: libnvidia-gl-390, але не встановлено libnvidia-ifr1-390: i386: Залежить: libnvidia-gl-390: i386, але не встановлено nvidia-driver-390: Залежить: libnvidia- gl-390 (= 390.48-0ubuntu3), але він не встановлений ....
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).
Ярл Арнтцен

1

Запустити це спочатку,

Рішення #for FILE in $(dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done

Потім встановіть його з ppa,

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

це працювало для мене на Ubuntu 18.04 LTS


Nvidia-driver-390 знаходиться у сховищах Ubuntu 18.04 за замовчуванням, тож який сенс додавати PPA?
карел
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.