Hệ thống con Windows cho Linux (WSL) có lỗi tương tự
Trong Hệ thống con Windows cho Linux (WSL) trong Windows 10, tệp /usr/lib/i386-linux-gnu/mesa/libGL.so.1
không tồn tại. Thay vào đó là tập tin /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
dường như để thay thế nó. Tuy nhiên, nếu bạn xóa tập tin thay thế, thư viện hoàn toàn không hoạt động.
Đổi tên thư viện sau đó đổi tên lại giải quyết vấn đề
Nếu bạn đổi tên tệp và sau đó đổi tên lại, các lỗi sẽ biến mất và nó hoạt động nhanh hơn rất nhiều:
───────────────────────────────────────────────────────────────────────────────
rick@alien:/mnt/e/etc$ lock-screen-timer
Linux version 4.4.0-43-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #1-Microsoft Wed Dec 31 14:42:53 PST 2014
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
───────────────────────────────────────────────────────────────────────────────
rick@alien:/mnt/e/etc$ sudo ldconfig -p | grep -i gl.so
libwayland-egl.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1
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
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1
───────────────────────────────────────────────────────────────────────────────
rick@alien:/mnt/e/etc$ sudo rm /usr/lib/i386-linux-gnu/mesa/libGL.so.1
rm: cannot remove '/usr/lib/i386-linux-gnu/mesa/libGL.so.1': No such file or directory
───────────────────────────────────────────────────────────────────────────────
rick@alien:/mnt/e/etc$ sudo mv /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.ORIGINAL
───────────────────────────────────────────────────────────────────────────────
rick@alien:/mnt/e/etc$ lock-screen-timer
Linux version 4.4.0-43-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #1-Microsoft Wed Dec 31 14:42:53 PST 2014
/usr/bin/zenity: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory
───────────────────────────────────────────────────────────────────────────────
rick@alien:/mnt/e/etc$ sudo mv /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.ORIGINAL /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
───────────────────────────────────────────────────────────────────────────────
rick@alien:/mnt/e/etc$ lock-screen-timer
Linux version 4.4.0-43-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #1-Microsoft Wed Dec 31 14:42:53 PST 2014
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
───────────────────────────────────────────────────────────────────────────────
rick@alien:/mnt/e/etc$
Tôi đã xác minh thay đổi là liên tục, tức là đóng cửa sổ đầu cuối WSL và mở một cửa sổ mới.
Thư viện sử dụng cái gì?
Thư viện được sử dụng yad
trong tập lệnh bash hẹn giờ màn hình khóa được nâng cấp với hỗ trợ lai cho WSL ngoài Ubuntu. Yad là một nhánh trong Zenity
đó là lý do tại sao bạn thấy Gtk-Message:
tham chiếu giống như Zenity trong thông báo lỗi thứ ba ở trên.
Đây là yad
cửa sổ trông giống như trong Ubuntu (trong WSL, nó hơi khác một chút):