29
октябрь
2025
20:48

Устранение отклонений при установке драйвера видеокарты nVidia

29 октябрь 2025 20:48

Решение проблемы при установке драйвера nvidia-driver-390 при помощи команд dpkg-divert.

Предыстория

В Linux Lite 20.04 (отечественная ОС на основе Ubuntu с облегченным интерфейсом) работает у меня дома и я доволен ей (для AMD Phenom(tm) II X3 710). В операционной системе для видеокарты GF119 [GeForce GT 610] был установлен и отлично работал драйвер nvidia-driver-390. В терминале я шибочно выполнил команду ubuntu-drivers install , которая удалила драйвер nvidia-driver-390 и попыталась установить ранее не выбранный пакет nvidia-340.

Причина

nvidia-340 является в Ubuntu рекомендованным драйвером.

sudo ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0 ==
modalias : pci:v000010DEd0000104Asv00001043sd0000847Bbc03sc00i00
vendor : NVIDIA Corporation
model : GF119 [GeForce GT 610]
driver : nvidia-340 - third-party non-free recommended
driver : nvidia-driver-390 - third-party non-free
driver : xserver-xorg-video-nouveau - distro free builtin

В итоге выполнения команды sudo ubuntu-drivers install, драйвер nvidia-340 не установился из-за ошибки:

dpkg: ошибка при обработке архива /var/cache/apt/archives/nvidia-340_340.108-0ubuntu5.20.04.2_amd64.deb (--unpack):
попытка перезаписать «/usr/bin/nvidia-bug-report.sh», который уже имеется в пакете nvidia-utils-390 390.157-0ubuntu0.20.04.1
pkg-deb: ошибка: вставка subprocess was killed by signal (Обрыв канала)
При обработке следующих пакетов произошли ошибки:
/var/cache/apt/archives/nvidia-340_340.108-0ubuntu5.20.04.2_amd64.deb

Драйвер nvidia-driver-390 тоже не установился из-за другой ошибки:

sudo apt install nvidia-driver-390

dpkg-divert: ошибка: несовпадение с пакетом
при удалении «отклонение /usr/lib/x86_64-linux-gnu/libGL.so.1 из-за libnvidia-gl-390»
найдено «отклонение /usr/lib/x86_64-linux-gnu/libGL.so.1 в /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib из-за nvidia-340»
dpkg: ошибка при обработке архива /tmp/apt-dpkg-install-NZZNFn/04-libnvidia-gl-390_390.157-0ubuntu0.20.04.1_amd64.deb (--unpack):
new libnvidia-gl-390:amd64 package pre-installation script subprocess returned error exit status 2

Таким образом, команда ubuntu-drivers install удалила один драйвер и не смогла установить другой.

Попытка восстановления сломанных пакетов не помогла

sudo apt --fix-broken install

dpkg-divert: ошибка: несовпадение с пакетом
при удалении «отклонение /usr/lib/x86_64-linux-gnu/libGL.so.1 из-за libnvidia-gl-390»
найдено «отклонение /usr/lib/x86_64-linux-gnu/libGL.so.1 в /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib из-за nvidia-340»

Решение

Изучение ошибок

Из вывода команд узнал причину - некие "отклононения" в библиотеках:

sudo apt install nvidia-driver-390

dpkg-divert: ошибка: несовпадение с пакетом
_при удалении «отклонение /usr/lib/x8664-linux-gnu/libGL.so.1 из-за libnvidia-gl-390»
найдено «отклонение...

Начал разбираться и узнал про незнакомую мне команду dpkg-divert.

Bывод справки man dpkg-divert гласит:
dpkg-divert - переопределить версию файла пакета

--list glob-pattern
Список отклонений, соответствующих шаблону glob-pattern.

Вывод списка отклонений при помощи dpkg-divert --list

dpkg-divert --list nvidia | grep nvidia-340

или так:

Если система "здорова", список должен быть пустой. В моём случае появились кандидаты на исправление:

dpkg-divert --list | grep nvidia-340

отклонение /usr/lib/x86_64-linux-gnu/libEGL.so в /usr/lib/x86_64-linux-gnu/libEGL.so.distrib из-за nvidia-340
отклонение /usr/lib/i386-linux-gnu/libGLESv2.so.2 в /usr/lib/i386-linux-gnu/libGLESv2.so.2.distrib из-за nvidia-340
отклонение /usr/lib/x86_64-linux-gnu/libGLESv2.so.2 в /usr/lib/x86_64-linux-gnu/libGLESv2.so.2.distrib из-за nvidia-340
отклонение /usr/lib/i386-linux-gnu/libGLESv1_CM.so.1 в /usr/lib/i386-linux-gnu/libGLESv1_CM.so.1.distrib из-за nvidia-340
отклонение /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so в /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.distrib из-за nvidia-340
отклонение /usr/lib/x86_64-linux-gnu/libEGL.so.1 в /usr/lib/x86_64-linux-gnu/libEGL.so.1.distrib из-за nvidia-340
отклонение /usr/lib/i386-linux-gnu/libGLESv2.so в /usr/lib/i386-linux-gnu/libGLESv2.so.distrib из-за nvidia-340
отклонение /usr/lib/i386-linux-gnu/libEGL.so в /usr/lib/i386-linux-gnu/libEGL.so.distrib из-за nvidia-340
отклонение /usr/lib/i386-linux-gnu/libGL.so в /usr/lib/i386-linux-gnu/libGL.so.distrib из-за nvidia-340
отклонение /usr/lib/x86_64-linux-gnu/libGL.so.1 в /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib из-за nvidia-340
отклонение /usr/lib/x86_64-linux-gnu/libGL.so в /usr/lib/x86_64-linux-gnu/libGL.so.distrib из-за nvidia-340
отклонение /usr/lib/i386-linux-gnu/libGLESv1_CM.so в /usr/lib/i386-linux-gnu/libGLESv1_CM.so.distrib из-за nvidia-340
отклонение /usr/lib/i386-linux-gnu/libEGL.so.1 в /usr/lib/i386-linux-gnu/libEGL.so.1.distrib из-за nvidia-340
отклонение /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1 в /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1.distrib из-за nvidia-340
отклонение /usr/lib/x86_64-linux-gnu/libGLESv2.so в /usr/lib/x86_64-linux-gnu/libGLESv2.so.distrib из-за nvidia-340
отклонение /usr/lib/i386-linux-gnu/libGL.so.1 в /usr/lib/i386-linux-gnu/libGL.so.1.distrib из-за nvidia-340

Исправление отклонений

Последовательно исправил все "отклонения" при помощи команд:

sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libEGL.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGLESv2.so.2
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGLESv2.so.2
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGLESv1_CM.so.1
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libEGL.so.1
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGLESv2.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libEGL.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGL.so
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGL.so.1
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGL.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGLESv1_CM.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libEGL.so.1
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1
sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGLESv2.so
sudo dpkg-divert --remove --no-rename /usr/lib/i386-linux-gnu/libGL.so.1

Исправил и главное отклонение:

sudo dpkg-divert --remove --no-rename /usr/lib/x86_64-linux-gnu/libGL.so

где ключи:
--remove удаляет отклонение в файле ...
--no-rename указывает удалять, а не переименовывать отклонение (актуально для важных пакетов, которые должны надёжно исчезнуть из базы данных dpkg).

Переустановка пакета: теперь успешная

sudo apt install --reinstall libnvidia-gl-390 

Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Следующие НОВЫЕ пакеты будут установлены:
libnvidia-gl-390

и т.д.

DKMS: install completed.
Настраивается пакет xserver-xorg-video-nvidia-390 (390.157-0ubuntu0.20.04.1) …
Настраивается пакет nvidia-driver-390 (390.157-0ubuntu0.20.04.1) …
Обрабатываются триггеры для libc-bin (2.31-0ubuntu9.18) …
Обрабатываются триггеры для man-db (2.9.1-1) …
Обрабатываются триггеры для initramfs-tools (0.136ubuntu6.8) …
update-initramfs: Generating /boot/initrd.img-5.4.0-216-lowlatency
I: The initramfs will attempt to resume from /dev/sda7
I: (UUID=7a17fe7e-acee-4c19-8641-1fdd39d0364d)
I: Set the RESUME variable to override this.

Перезагрузка

Теперь, когда драйвер установелн и в ядро dkms добавил драйвер видеокарты, выполнил перезагрузку:

sudo shutdown --reboot now 
# sudo shutdown --halt now

или

sudo poweroff --reboot
# sudo poweroff --halt

Результат - 2D работает

ОС загрузилась и 2D графика работает корректно.


Источник: https://forum.ubuntu.ru/index.php?topic=301381.0


Дополнение: библиотека для ускорения видео

Проверка ускорения видео: команда vainfo

vainfo

Ошибок быть не должно, в моём в выводе команды происходит ошибка, сообщающая о том, что libva не работает.

libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

Сделал для ускорения видео

sudo apt install mesa-va-drivers mesa-vdpau-drivers

В старых Ununtu Linux нужен vdpau-va-driver, которого нет.

sudo apt install vdpau-va-driver

E: Для пакета «vdpau-va-driver» не найден кандидат на установку.

Решение ускорения видео для vdpau в Ubuntu 20.04

https://launchpad.net/ubuntu/cosmic/amd64/vdpau-va-driver/0.7.4-6ubuntu1

Команда для установки из каталога, в который загружен файл:

sudo dpkg -i vdpau-va-driver_0.7.4-6ubuntu1_amd64.deb

Проверка vainfo

vainfo

Результат:

libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.7 (libva 2.6.0)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG4Simple            : VAEntrypointVLD
      VAProfileMPEG4AdvancedSimple    : VAEntrypointVLD
                     : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD

При запуске воспроизведения видео FullHD с любого сайта, например, Vimeo, загрузка процессора 56%.

Затем применил настройку Mozilla Firefox для ускорения работы браузера - статья включение аппаратного ускорения в браузере FireFox. Включил в about:config параметр media.hardware-video-decoding.enabled = true - загрузка процессора 50-65%.



Похожие публикации