Ubuntu 16.04+
Если вы все еще получаете ту же ошибку, если вы используете драйвер nvidia, иногда вы увидите, что libGL.so.1 указывает на неоднозначный libGL, предоставляемый как mesa, так и nvidia. Чтобы проверить это, вы можете запустить эту команду
$ sudo ldconfig -p | grep -i gl.so
Вывод был что-то вроде:
libwayland-egl.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1
libftgl.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libftgl.so.2
libcogl.so.20 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcogl.so.20
libQt5OpenGL.so.5 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5
libQtOpenGL.so.4 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4
libQtOpenGL.so.4 (libc6) => /usr/lib/i386-linux-gnu/libQtOpenGL.so.4
libOpenGL.so.0 (libc6,x86-64) => /usr/lib/nvidia-378/libOpenGL.so.0
libOpenGL.so (libc6,x86-64) => /usr/lib/nvidia-378/libOpenGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/nvidia-378/libGL.so.1
libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/mesa/libGL.so.1
libGL.so.1 (libc6) => /usr/lib32/nvidia-378/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/nvidia-378/libGL.so
libGL.so (libc6) => /usr/lib32/nvidia-378/libGL.so
libEGL.so.1 (libc6,x86-64) => /usr/lib/nvidia-378/libEGL.so.1
libEGL.so.1 (libc6) => /usr/lib32/nvidia-378/libEGL.so.1
libEGL.so (libc6,x86-64) => /usr/lib/nvidia-378/libEGL.so
libEGL.so (libc6) => /usr/lib32/nvidia-378/libEGL.so
Теперь мне просто нужно было удалить библиотеку, предоставленную mesa, и все работало отлично.
$ sudo rm /usr/lib/i386-linux-gnu/mesa/libGL.so.1
Обновление:
эта проблема больше не существует в Ubuntu 18.04 LTS.
Подсистема Windows для Linux (WSL) имеет ту же ошибку
В Windows Subsystem for Linux (WSL) под Windows 10 этот файл
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
не существует. Вместо этого есть файл,/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
кажется, заменить его. Однако, если вы удалите файл замены, библиотека не будет работать вообще.Переименовать библиотеку, затем переименовать обратно решает проблему
Если вы переименуете файл, а затем переименуете его обратно, ошибки исчезнут, и он будет работать намного быстрее:
Я проверил, что изменение является постоянным, то есть закройте окно терминала WSL и откройте новое окно.
Что использует библиотека?
Библиотека используется
yad
в bash-скрипте lock-screen-timer с обновленной гибридной поддержкой WSL в дополнение к Ubuntu. Yad - это форкZenity
, поэтому вы видитеGtk-Message:
ссылку на Zenity в третьем сообщении об ошибке выше.Вот как
yad
выглядит окно в Ubuntu (в WSL оно немного отличается):источник
lock-screen-timer
это просто пример скрипта, который вызывает графический интерфейс. Вы могли бы использоватьgedit
.rqt
сказать, что моя application ( ) может вызывать графический интерфейс по-другому, и поэтому может произойти сбой после попытки исправленияЭто может быть проблема с драйвером nvidia, согласно проблеме steam-for-linux .
В моем случае я установил SuperTuxKart через
flapak
, когда я запустил его, я встретил следующие ошибки:Мое решение:
ubuntu-drivers devices
Он уже
nvidia-driver-430
установлен.nvidia-driver-418
для заменыnvidia-driver-430
sudo apt install libnvidia-gl-418
Это вызвало отсутствие зависимости
libnvidia-compute-418
, поэтомуlibnvidia-compute-418
сначала установите .sudo apt install libnvidia-compute-418
тогда
sudo apt install libnvidia-gl-418
Потом я запустил SuperTuxKart , все заработало.
источник