LibGl, fbConfigs के साथ समस्याएँ, प्रत्येक अद्यतन के माध्यम से बदल जाती हैं?


38

मुझे समस्या है जब एसएफएमएल-प्रोजेक्ट संकलित करें (कोई ग्राफिक न देखें):

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

इस त्रुटि को इस ट्यूटोरियल के माध्यम से एनवीडिया-ड्राइवर्स को रीइंस्टॉल करके हल किया जा सकता है: https://askubuntu.com/a/451248/343489

.. लेकिन जब मुझे नए अपडेट मिलते हैं - यह त्रुटि वापस आ रही है? (मुझे क्या करना चाहिए? यह समाधान नहीं है - सिस्टम के अपडेट का उपयोग न करें ...

पीएस और हाँ, मैंने एनवीडिया-ड्राइवरों को स्थापित करने के बाद सभी परिवर्तनों को बचाया


1
यह मेरे लिए होता है अगर मैं एक ओपन निष्पादन गतिशील लोड हो रहा है मेसा शुरू करने की कोशिश libGL.so: LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa ./glprogram। डिफ़ॉल्ट रूप से, मेरे Ubuntu 16.04 का उपयोग करता /usr/lib/nvidia-361/libGL.soहै /etc/ld.so.conf.d/x86_64-linux-gnu_GL.confऔर यह सब ठीक काम करता है।
Ciro Santilli 新疆 改造 iro i 事件 '

जवाबों:


29

swrastबात सॉफ्टवेयर रेंडरर है। इसका मतलब है कि यह आपके ग्राफिक्स कार्ड के लिए हार्डवेयर ड्राइवर नहीं ढूंढ रहा है। वहाँ स्थापित libGL पुस्तकालयों का एक गुच्छा और उन पुस्तकालयों के प्रतीकात्मक लिंक का एक गुच्छा है। इनको शेल से चलाने के लिए देखें:

find /usr -iname "*libGL.so*" -exec ls -l -- {} + 

अब आपकी समस्या का संभावित कारण यह है कि ग्राफिक्स ड्राइवर स्थापित करने से कभी-कभी ये प्रतीकात्मक लिंक टूट जाते हैं। (विशेष रूप /usr/local/lib/libGL.so.1.2.0से गलत परिवाद या गलत लिंक की सहानुभूति होने की संभावना है)।

ओपनग्लॉग प्रोग्राम को चलाने के लिए आप किस लाइब्रेरी की कोशिश कर रहे हैं, यह जानने के लिए कि आप थोड़ी सी वर्बोसिटी को चालू कर सकते हैं और एक साधारण ओपनगेल प्रोग्राम चला सकते हैं। आप मानक OpenGL परीक्षण कार्यक्रम का उपयोग करके इसे सत्यापित कर सकते हैं:

LIBGL_DEBUG=verbose glxgears

उम्मीद है कि एसएफएमएल की तरह ही विफल हो जाएगी। इसके साथ आपको LIBGL_DEBUGयह बताना चाहिए कि OpenGL लाइब्रेरी क्या लोड करने की कोशिश कर रही है। इसके अलावा, यह लोड करने की कोशिश कर रहा काम लगभग निश्चित रूप से हो जाएगा /usr/local/lib/libGL.so.1.2.0(संपादित करें: जब मैंने यह उत्तर दिया था, तो यह मेरी मशीन पर मानक OpenGL पुस्तकालय था। यह आपकी मशीन पर अब कुछ अन्य संस्करण हो सकता है)।

तो समाधान (इस मामले में) यह सुनिश्चित करना है कि /usr/local/lib/libGL.so.1.2.0सही OpenGL लाइब्रेरी में इंगित एक प्रतीकात्मक लिंक है। मेरे मामले में मेरे पास Nvidia 3.40 ड्राइवर हैं इसलिए मैं भागा:

ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0

लेकिन आप इसे OpenGL के लिब पर इंगित करना चाहेंगे जो आपके लिए उपयुक्त है (पहली खोज कमांड में सूचीबद्ध)।

सारांश में: ग्राफिक्स मालिक को स्थापित करने (मालिकाना) OpenGL के काम के लिए इस्तेमाल किए गए प्रतीकात्मक लिंक को तोड़ सकते हैं। इस समस्या को हल करने के लिए मैन्युअल रूप से प्रतीकात्मक लिंक को ठीक करें ( /usr/local/lib/libGL.so.1.2.0पहले ठीक करें )।


इस समस्या ने मुझे त्रुटि संदेश को समझने में मदद की, लेकिन इसे ठीक नहीं किया। "एनवीडिया ड्राइवरों को फिर से स्थापित करें" उत्तर देने में मदद मिली, यह एक अच्छा पूरक था क्योंकि यह वास्तव में मेरे लिए समस्या तय करता था।
एचएनसीओ

@henko हाँ नवदिया ड्राइवरों को फिर से स्थापित करना संभवत: सबसे आसान और सबसे आसान तरीका है। यदि ड्राइवर किसी भी कारण से आपकी समस्या को ठीक नहीं करता है और आपको अपने हाथों को गंदा करने की आवश्यकता है, तो इस दृष्टिकोण पर वापस लौटें।
हेगड़े

6
मैंने हर भाग को समझा, "लगभग निश्चित रूप से /usr/local/lib/libGL.so.1.2.0"। मेरा शो "libGL: OpenDriver: try /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so libGL: OpenDriver: trying /usr/bib/x86_64-linux-gnu/dri/swrast_dri.so" और सभी ये फाइल मेरे सिस्टम में मौजूद है ...
शमूएल ली

1
आपके स्पष्टीकरण के लिए फिर से धन्यवाद; मैं समस्या के बारे में बेहतर समझता हूं। मैं यह भी बताना चाहता हूं कि मेरे मामले में, ubuntu swrast.so में एक पुष्ट बग है, और लोग इस पर चर्चा कर रहे हैं।
सैमुअल ली

1
धन्यवाद @deantedhedgehog यह एक उत्कृष्ट रूप से व्यक्त की गई पोस्ट थी और मुझे मेरे मुद्दे को हल करने में मदद की (फेडोरा -25 पर, वैसे)। = :)। ऊपर मतदान किया।
NYCeyes

5

मैं nvidia-340ड्राइवरों के साथ Ubuntu 16.10 पर एक ही मुद्दा था और यहां कोई भी समाधान मेरे लिए काम नहीं करता था।

32-बिट लाइब्रेरी चालू करने के लिए लाइब्रेरी पथ पर नहीं थे।

यह एक लाइनर मेरे लिए काम करता है:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-340"

4

मुझे nVidia ड्राइवर को इंगित करने के लिए सही सिम्कलिन प्राप्त करने में समस्याएँ हो रही थीं और मुझे एक और तरीका मिला जो मेरे लिए काम करता है।

इसकी रूपरेखा यहाँ दी गई है

और यह सूचीबद्ध करता है कि पीपीए के माध्यम से एनवीडिया चालक को कैसे स्थापित किया जाए जो कि 349.16, नवीनतम संस्करण के लिए उपलब्ध है।

पहले टर्मिनल विंडो ( Ctrl+ ALT+ T) खोलकर और टाइप करके किसी भी एनवीडिया ड्राइवर को अनइंस्टॉल करें

sudo apt-get remove nvidia*

अपने सिस्टम को रिबूट करें

फिर दूसरा टर्मिनल खोलें और निम्नलिखित टाइप करें

sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-349 nvidia-settings
sudo add-apt-repository -r ppa:xorg-edgers/ppa

फिर दोबारा रिबूट करें

मैंने सिम्बलिंक के साथ खो जाने के बाद यह कोशिश की और स्टीम ने ड्राइवर को स्थापित करने के तुरंत बाद ठीक काम किया और फिर से सिस्टम अपडेट के 400+ megs होने के बाद भी यह काम कर रहा था।


2
मैं ड्राइवर स्थापित होने के बाद xorg-edgers ppa छोड़ने का सुझाव नहीं दूंगा। अपडेट में बहुत सारे अस्थिर पैकेज आएंगे।
पायलट 6

सिर्फ एनवीडिया को हटाने * ने पहले ही मेरे लिए इस समस्या को हल कर दिया है!
xtofl

3

एड्रियन के उत्तर का विकल्प प्रदान करने के लिए: यदि आप एक पीपीए में पाए जाने वाले (या मेरे मामले में, पुनः स्थापित करना) के बजाय सीधे NVIDIA से स्वामित्व वाले मालिकाना ड्राइवरों का उपयोग करना पसंद करते हैं, तो नवीनतम मालिकाना चालक स्वैच्छिक त्रुटि को खत्म करने में मदद कर सकता है।

यदि आपके पास अभी तक NVIDIA ड्राइवर नहीं है, तो NVIDIA की वेबसाइट से ड्राइवर डाउनलोड करें । इसके बाद, tty ( ctrl+ alt+ F1) पर जाएं और अपना लॉगिन प्रबंधक बंद करें:

अगर lightdm का उपयोग कर रहे हैं, $ sudo service lightdm stop

अगर gdm का उपयोग कर रहे हैं, $ sudo service gdm stop

इंस्टॉल स्क्रिप्ट पर नेविगेट करें और इसे चलाएं, और संकेतों का पालन करें। यदि पूर्व-स्थापित स्क्रिप्ट विफल रहती है, तो चिंता न करें। मैं हमेशा डीकेएमएस और 32-बिट संगतता पुस्तकालयों को पंजीकृत करना स्वीकार करता हूं। ड्राइवर स्थापित होने के बाद, अपनी मशीन को पुनरारंभ करें:

$ sudo reboot

यदि आपके पास पहले से ही पुराने NVIDIA ड्राइवर से एक इंस्टॉल स्क्रिप्ट है, तो बस NVIDIA ड्राइवर को स्क्रिप्ट को ऊपर बताए अनुसार चलाएं, लेकिन "--update" विकल्प के साथ:

$ sudo ./NVIDIA-Linux-x86_64-***.**.run --update

यह आपको ड्राइवर का सबसे अद्यतित संस्करण मिलेगा।

ऐसा करने से मेरी libGL error: failed to load driver: swrastत्रुटि ठीक हो गई ।


3

Ubuntu 18 पर एक ही समस्या है। यह मूल रूप से केवल 32 बिट ऐप्स के साथ हुआ। इसलिए मेरा विचार 32 बिट एनविडिया को स्थापित करने का था, क्योंकि मेरा / usr / lib / i386-linux-gnu / folder संदेहास्पद रूप से खाली था।

बहुत कम कोशिशों के बाद, इसने भाप और शराब शुरू न होने के साथ मेरी समस्या को ठीक कर दिया:

sudo apt install libnvidia-gl-418:i386

(और आपके पास जो भी संस्करण है उसे 418 बदलें)

दिलचस्प है कि अनुप्रयोगों ने स्थापना के दौरान लापता निर्भरता के बारे में शिकायत नहीं की।


ऐसा लगता है कि मेरी समस्या से संबंधित एक समस्या को कम से कम तय किया गया है ...
एंड्रयू

यह 32 बिट क्यों हो सकता है। अन्य कार्यक्रम ठीक काम करते हैं, लेकिन वे शायद 64 बिट हैं। फिर भी, यह ठीक काम करता है (मुझे हालांकि संस्करण को टक्कर देना था)
झो

2

मुझे स्वीकार करना होगा, मुझे यकीन नहीं है कि यह मेरे लिए क्यों काम करता है, लेकिन यह किया। विशेष रूप से इस मामले में इस तरह की एक नई प्रविष्टि जोड़कर ld.so.conf.d प्रविष्टियों को "फिक्सिंग":

sudo ln -s /usr/lib/nvidia-381/ld.so.conf /etc/ld.so.conf.d/nvidia64.conf
sudo ldconfig 

यह समझ में आता है, जब तक आप निम्नलिखित नहीं चलाते हैं find:

$ find -L /etc/ld.so.conf.d -type f | xargs grep -i nvidia
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib32/nvidia-381

तीन प्रतियों में एक ही प्रविष्टि क्यों काम करती है, लेकिन डुप्लिकेट में नहीं, मुझे पता नहीं है!


मेरे लिए उबुनू 17.04 पर काम करता है। बस एक नोट - पथ / usr / lib / nvidia-xxx है, जहां xxx ड्राइवर संख्या है इसलिए कमांड को उसी के अनुकूल करें।
user2082382 18

2

यहाँ एक aptसमाधान है कि मेरे लिए काम किया है, कोई सहानुभूति या आसपास mucking ld.so.conf.d:

apt install --reinstall libgl1-mesa-glx:i386
apt install mesa-utils nvidia-driver nvidia-driver-libs-i386

1

मैं सिर्फ इस लाइन का उपयोग करता हूं:

 sudo rm /usr/lib/i386-linux-gnu/libGL.so.1

और यह काम करता है।

क्योंकि मुझे ऐसे इनपुट मिलते हैं जब मैं निष्पादित करता हूं 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
libOpenGL.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so.0
libOpenGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so
libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so.1
libEGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so

1
क्या लोग इसका मतलब मानने वाले हैं ...?
एंड्रयू

मेरे लिए काम करता है, धन्यवाद!
हेट

0

बस इसे चलाएं:

sudo apt-get install libnvidia-gl-(the version of your driver):i386

आपके ड्राइवर का संस्करण एनवीडिया-सेटिंग्स में दिखाया गया है।


0

मेरे मामले में इस समस्या का समाधान त्रुटि संदेश की निरंतरता में है

पैराव्यू 5.7.0 ने मुझे सूचित किया कि:

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
(   0.833s) [paraview] vtkOpenGLRenderWindow.c:748 ERR| vtkXOpenGLRenderWindow (0x5588ae6a2160): GLEW could not be initialized: Missing GL version
...
Segmentation fault

संदेश

GLEW could not be initialized: Missing GL version

महत्वपूर्ण रहा है। मैं 'glxgears' चलाने के लिए जाँचता हूँ कि ग्राफिक्स लाइब्रेरी ठीक चल रही थी - यह भी देखें man glxgears- यह एनीमेशन दिखा रहा है:

Glxgears का स्क्रीनशॉट

तब मेरा समाधान बस पर्यावरण चर सेट कर रहा था

LD_PRELOAD=/usr/lib/libGL.so

नोट करें:

  1. हालांकि मेरे पास एक एनवीडिया ग्राफिक्स कार्ड है, मुझे इसके साथ फिडेल करने की आवश्यकता नहीं थी;
  2. लॉन्च करते हुए locate libGL.so, मुझे एक और उम्मीदवार मिला /usr/lib/i386-linux-gnu/libGL.so। हालाँकि, LD_PRELOAD के रूप में इसे सेट करने से समस्या ठीक नहीं हुई;
  3. GLEW लाइब्रेरी के बारे में कोई भी जानकारी सेट करने की आवश्यकता नहीं है --- या तो देखें locate libGLEW.so

मैं सुराग के लिए https://github.com/openai/mujoco-py/issues/44 का ऋणी हूं


LD_PRELOAD और अधिक सामान्यतः उद्धृत LD_LIBRARY_PATH के बीच अंतर के लिए कृपया देखें stackoverflow.com/q/14715175/5459638
XavierStuvw

-3

मैं इस अजीब मुद्दे का सामना कर रहा था जब मैं अपने मैकबुक प्रो से अपने उबंटू वीएम के लिए, लेकिन मेरे Ubuntu 16.04 पर नीचे Nvidia ड्राइवर को स्थापित करने से यह समस्या ठीक हो गई। उम्मीद है इससे आपका काम बनेगा।

sudo apt-get install एनवीडिया -331


1
आप VM अतिथि सिस्टम पर Nvidia GPU ड्राइवर क्यों स्थापित करेंगे? Ó_16
डेविड फ़ॉस्टर

नीचा दिखाना उचित नहीं है। @DavidFoerster यह सही है कि एक VM में GPU ड्राइवर स्थापित करने का कोई मतलब नहीं है (जब तक कि आप VM को GPU हार्डवेयर passthrough नहीं करते हैं)। लेकिन: मैं एसएसएच पर एक्स चला रहा हूं, और मैं उसी समस्या का सामना कर रहा हूं। रिमोट मशीन (वीएम) पर एक्स एप्लिकेशन शुरू करने से लगभग हमेशा ओपी के प्रश्न में उल्लिखित त्रुटि संदेश जाता है। मुझे अभी तक उस समस्या का हल नहीं मिला है, लेकिन अगर रिमोट वीएम पर जीपीयू ड्राइवर स्थापित करना समाधान होगा, तो मैं यह करूंगा, भले ही यह समझ में आता हो, बस उस त्रुटियों को दूर करने के लिए (मैं हूँ) वर्तमान में उनकी अनदेखी)।
बिनुआर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.