Установка драйверов 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 с благодарностью заикаться p0et2 :)

Лукас Серафим
источник
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
Вы спасли меня от моей агонии, я сделал аккаунт здесь, чтобы поднять голос
Primusa
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 дисплея - тогда у вас проблемы с загрузкой. Как я обнаружил: переподключи старый монитор, и он загрузился легко
Vic Nicethemer
Я сделал # 1, а затем sudo apt install -fи sudo apt upgrade. работал.
ICE
Почему этот ответ почти совпадает с ответом Лукаса Серафима?
Пим Хейден
6

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

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

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

youbaji
источник
Благодаря тонну! Сначала это выглядит так, как будто это не работает, но если мы продолжим пытаться и удалить, в конце концов, это решит. Еще раз спасибо.
Гаурав Ганди
Огромное спасибо! Я не мог обойти эту проблему, не зная, что могу изменить список dpkg-divert для мусора nvidia-340. Ты рок
Микис
2

Я бы запустил apt auto-clean и проверил, не ошибся ли я.

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

изменить: чтобы ответить на другой ваш вопрос, когда я установил 18.04 на днях 390 работал нормально, но переход на 396 было немного "весело". Это исправило это для меня.

Эндрю Шотт
источник
Большое спасибо. Насколько я понял: (я думаю, что я могу сделать чистую переустановку): ~ $ sudo apt upgrade Чтение списков пакетов ... Готово Построение дерева зависимостей Чтение информации о состоянии ... Готово Возможно, вы захотите запустить 'apt - -fix-broken install 'чтобы исправить это. Следующие пакеты имеют неудовлетворенные зависимости. libnvidia-ifr1-390: зависит от: libnvidia-gl-390, но не установлено libnvidia-ifr1-390: i386: зависит: libnvidia-gl-390: i386, но не установлено nvidia-driver-390: зависит: libnvidia- gl-390 (= 390.48-0ubuntu3), но он не установлен ....
Ярл Арнцен
.... 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?
Карел