एनवीडिया एपीआई बेमेल


27

मैंने पोर्टल 2 के साथ आराम करने के एक दिन की योजना बनाई थी लेकिन स्टीम शुरू करने पर (कुछ हफ़्ते में पहली बार) मुझे टर्मिनल में निम्नलिखित संदेश के साथ स्वागत किया गया था:

Error: API mismatch: the NVIDIA kernel module has version 270.41.19,
but this NVIDIA driver component has version 270.41.06.  Please make
sure that the kernel module and all NVIDIA driver components
have the same version.

मैं कबूल करता हूँ कि मैं वास्तव में नहीं जानता कि यह ड्राइवर कब कहता है। का वचन nvidia-currentहै 270.41.19। मैंने सोचा था कि कि ड्राइवर और मॉड्यूल, एक में सभी था।

मैं एक्स-स्वाट पीपीए का उपयोग करता हूं और मैंने नोट किया है कि nvidia-settingsपैकेज को बढ़ावा मिला है 275.09.07। जैसा कि यह सिर्फ एक सेटिंग एप्लिकेशन है, मुझे नहीं लगता कि इस बेमेल का इससे कोई लेना-देना है। यह भी समस्या का वर्णन किया जा रहा है के रूप में एक ही संस्करण नहीं है।

मैं मानक Nvidia ड्राइवर को वापस नहीं लेना चाहता क्योंकि यह मेरे GTX580 पर स्थिर से कम है। मैं एक उत्तर को स्वीकार करता हूं जो मैन्युअल सेटअप लेता है और जब कर्नेल recompiles (यानी, कुछ DKMS विज़ार्ड) को पुन: व्यवस्थित करता है, लेकिन इसे काम करना पड़ता है। कर्नेल अपग्रेड के बाद पुनः आरंभ होने पर मैं हर बार टेक्स्ट-मोड पर वापस जाना नहीं चाहता।

संपादित करें: ड्राइवर संस्करणों के बारे में एक भी शिकायत के बिना Minecraft काम करता है। खेल में प्रवेश करते समय पेनम्ब्रा की लगभग एक ही त्रुटि होती है।

संपादित करें: यहां मैं 32 बिट फ़ाइलों के संदर्भ में काम कर रहा हूं। वे सभी सही संस्करण में लग रहे हैं।

ls -l /usr/lib32/nvidia-current/ | awk '{ print $8 " " $9 " " $10 }'

libcuda.so -> libcuda.so.270.41.19
libcuda.so.1 -> libcuda.so.270.41.19
libcuda.so.270.41.19  
libGL.la  
libGL.so -> libGL.so.1
libGL.so.1 -> libGL.so.270.41.19
libGL.so.270.41.19  
libnvcuvid.so -> libnvcuvid.so.1
libnvcuvid.so.1 -> libnvcuvid.so.270.41.19
libnvcuvid.so.270.41.19  
libnvidia-cfg.so -> libnvidia-cfg.so.1
libnvidia-cfg.so.1 -> libnvidia-cfg.so.270.41.19
libnvidia-cfg.so.270.41.19  
libnvidia-compiler.so -> libnvidia-compiler.so.1
libnvidia-compiler.so.1 -> libnvidia-compiler.so.270.41.19
libnvidia-compiler.so.270.41.19  
libnvidia-glcore.so.270.41.19  
libnvidia-ml.so -> libnvidia-ml.so.1
libnvidia-ml.so.1 -> libnvidia-ml.so.270.41.19
libnvidia-ml.so.270.41.19  
libnvidia-tls.so.270.41.19  
libnvidia-wfb.so.1 -> libnvidia-wfb.so.270.41.19
libnvidia-wfb.so.270.41.19  
libOpenCL.so -> libOpenCL.so.1
libOpenCL.so.1 -> libOpenCL.so.1.0
libOpenCL.so.1.0 -> libOpenCL.so.1.0.0
libOpenCL.so.1.0.0  
libXvMCNVIDIA_dynamic.so.1 -> libXvMCNVIDIA.so.270.41.19
libXvMCNVIDIA.so -> libXvMCNVIDIA.so.270.41.19
libXvMCNVIDIA.so.1 -> libXvMCNVIDIA.so.270.41.19
libXvMCNVIDIA.so.270.41.19  

संपादित करें 2: मुझे कुछ मिल सकता है।

में गुप्त /usr/lib32/उचित नहीं है ( nvidia-currentsubdir) मैं निम्नलिखित पाया:

ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep 270

libcuda.so.1 -> libcuda.so.270.41.06
libcuda.so.270.41.06  
libGL.so.1 -> libGL.so.270.41.06
libGL.so.270.41.06  
libnvidia-compiler.so.270.41.06  
libnvidia-glcore.so.270.41.06  
libnvidia-tls.so.270.41.06  
libvdpau.so.1 -> libvdpau.so.270.41.06
libvdpau.so.270.41.06  
libvdpau_trace.so -> vdpau/libvdpau_trace.so.270.41.06

किसी कारण के लिए सब कुछ /usr/lib32/nvidia-current/सही संस्करण है, लेकिन इसमें cruft का भार है /usr/lib32/जो पार्टी को बर्बाद कर सकता है।

संपादित करें 3: इन फाइलों के स्वामित्व वाले पैकेज को ट्रैक करने की कोशिश करना विफल रहा है:

find /usr/lib32 -iname '*270.41.06*' -exec dpkg -S "{}" \;

dpkg-query: no path found matching pattern /usr/lib32/libnvidia-compiler.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/libGL.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/vdpau/libvdpau_nvidia.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/vdpau/libvdpau_trace.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/libvdpau.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/tls/libnvidia-tls.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/libnvidia-tls.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/libcuda.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/libnvidia-glcore.so.270.41.06.

इन टूटे हुए संस्करणों से मुझे कैसे निपटना चाहिए, इस पर कोई सुझाव? उन्हें हटाओ? ./nvidia-current/संस्करणों में सिमिलिंक हटाएं ?


क्या आप 64-बिट सिस्टम पर हैं? यदि ऐसा है, तो काम करने और टूटे खेल के बीच अंतर हो सकता है कि क्या वे 32-बिट या 64-बिट हैं? यदि ऐसा है, तो यह हो सकता है कि 32- या 64-बिट उपयोगकर्ता स्थान घटक पुराना हो गया हो।
जेम्स हेनस्ट्रिज

मैं 64 बिट पर हूं। ऐसा लगता है कि यह एक अच्छा निदान हो सकता है। ट्राइन (जो कि मूल 64 बिट भी है) भी काम करती है।
ओली

@ किसी भी विचार के बारे में कैसे तय करने के बारे में एक जाना होगा?
ओली

मेरे पास एक एनवीडिया प्रणाली नहीं है, इसलिए निम्नलिखित एक अनुमान है। 32-बिट उपयोगकर्ता स्पेस लाइब्रेरी शायद कहीं नीचे हैं /usr/lib32। जांचें कि क्या वे प्राथमिक 64-बिट वाले संस्करण के समान दिखते हैं। यदि वे अलग-अलग हैं, तो पता करें कि उनके पास कौन सा पैकेज है और एक अद्यतन की तलाश करें।
जेम्स हेनस्ट्रिज

जवाबों:


17

निम्नलिखित करते हुए मेरे लिए Ubuntu 12.04 64bit पर 3.0.29 कर्नेल के साथ इसे हल किया। आशा करता हूँ की ये काम करेगा।

sudo apt-get purge nvidia-current
sudo apt-get install nvidia-current

4
dpkg --get-selections | grep nvidiaदूसरे एनवीडिया पैकेजों को खोजने के लिए उपयोग करें जिन्हें आपको शुद्ध करना है
क्रिस्टोफर मैनिंग

धन्यवाद GSBabil, मेरे लिए इसी तरह की समस्या तय की। बाद में एक रिबूट की आवश्यकता थी हालांकि इससे पहले कि "लिया"।
ऐश

5
@ChristopherMan एक आसान तरीका है कि सुडोल उपयुक्त हो जाएगा हटाने --purge एनवीडिया *
बेन मैककैन

शानदार ढंग से काम किया धन्यवाद! अंत में अप-टू-डेट ड्राइवर हैं, स्टीम खुश है: D
Ads20000

@GSBabil मैं आपको एक बीयर इतनी बुरी खरीदना चाहता हूं।
मैथ्यू स्क्रैग

14

यह पता लगाने पर कि पुरानी फ़ाइलों का एक भार crufting up / usr / lib32 था / मैंने उन्हें निम्नलिखित तरीके से बाहर ले जाया:

sudo find /usr/lib32 -iname '*270.41.06*' -exec mv {} {}.old \;

और X को पुनः आरंभ किया। इसने 3 डी को तोड़ दिया। हुज़्ज़ाह। पिछले सराहनीय प्रयोग से मैं देख सकता था कि चार टूटे हुए लिंक थे:

ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep 270

libcuda.so.1 -> libcuda.so.270.41.06
libGL.so.1 -> libGL.so.270.41.06
libvdpau.so.1 -> libvdpau.so.270.41.06
libvdpau_trace.so -> vdpau/libvdpau_trace.so.270.41.06

मैन्युअल रूप से चार फ़ाइलों के लिंक को बदलने के बजाय, मैं रिवेन्डेल के लॉर्ड एल्रोन्ड के पास गया और उसे एक फ़ेलोशिप स्थापित करने का काम सौंपा, जो कि मोरधोर में फंस सकता है, माउंट डूम को जगाएगा और मुझे लाने के लिए एक कमांड देगा और (और उसके द्वारा मैं) हम सब का मतलब है) और अंधेरे में हमें बांधते हैं।

बहुत हो गया। यहाँ एक आदेश है:

ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep 270 | cut -d' ' -f1 | xargs -l1 sudo bash -c "rm /usr/lib32/\$0 && ln -s /usr/lib32/nvidia-current/\$0 /usr/lib32/\$0"

क्या वह शानदार नहीं है। और इसने काम किया। अब मेरे पास 4 चमकदार नए सीमलिंक हैं:

ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep '/nvidia-current'

libcuda.so.1 -> /usr/lib32/nvidia-current/libcuda.so.1
libGL.so.1 -> /usr/lib32/nvidia-current/libGL.so.1
libOpenCL.so -> nvidia-current/libOpenCL.so
libvdpau.so.1 -> /usr/lib32/nvidia-current/libvdpau.so.1
libvdpau_trace.so -> /usr/lib32/nvidia-current/libvdpau_trace.so

मैंने तब यह देखने के लिए जाँच की कि क्या सब कुछ काम कर गया है। पुनः आरंभ करने से पहले मैंने सोचा कि मुझे यह देखने के लिए जांचना चाहिए कि क्या लिंक सही थे:

ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep '/nvidia-current' | cut -d' ' -f3 | xargs file

/usr/lib32/nvidia-current/libcuda.so.1:      symbolic link to `libcuda.so.270.41.19'
/usr/lib32/nvidia-current/libGL.so.1:        symbolic link to `libGL.so.270.41.19'
/usr/lib32/nvidia-current/libvdpau.so.1:     ERROR: cannot open `/usr/lib32/nvidia-current/libvdpau.so.1' (No such file or directory)
/usr/lib32/nvidia-current/libvdpau_trace.so: ERROR: cannot open `/usr/lib32/nvidia-current/libvdpau_trace.so' (No such file or directory)

महान। इसलिए मेगा-कमांड ने केवल दो लिंक सही किए। थोड़ा आगे देखने के बाद, ऐसा लगता है कि libvdpauफाइलें वास्तव में रहती हैं /usr/lib32/nvidia-current/vdpau/। इस समय कोई गड़बड़ नहीं:

sudo rm /usr/lib32/libvdpau{,_trace}.so*
sudo ln -s /usr/lib32/{nvidia-current/vdpau/,}libvdpau.so*
sudo ln -s /usr/lib32/{nvidia-current/vdpau/,}libvdpau_trace.so*

ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep '/nvidia-current' | cut -d' ' -f3 | xargs file

/usr/lib32/nvidia-current/libcuda.so.1:                      symbolic link to `libcuda.so.270.41.19'
/usr/lib32/nvidia-current/libGL.so.1:                        symbolic link to `libGL.so.270.41.19'
/usr/lib32/nvidia-current/vdpau/libvdpau.so.270.41.19:       ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
/usr/lib32/nvidia-current/vdpau/libvdpau_trace.so.270.41.19: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

कम से कम वे ठीक से हैं (यदि थोड़ा असावधानी से) परीक्षण करने के लिए समय जुड़ा हुआ है।

संपादित करें: यह काम किया लेकिन मेरे संघर्ष से सीखें: इसे सरल रखें।


मुझे इस तरह का नरक अच्छी तरह से याद है - केवल मुझे ठीक करने के लिए कमांड लाइन (कुछ गलत करने के मामले में) का उपयोग करने का जोखिम नहीं था: पी।
RolandiXor

7

यह भी करें:

$ dpkg --get-selections | grep nvidia

nvidia-common                   install
nvidia-current                  install
nvidia-current-updates              install
nvidia-experimental-x...            install
nvidia-settings                 install
nvidia-settings-updates             install

और फिर:

$ sudo apt-get purge nvidia-experimental-x...
...
$ sudo reboot

सब कुछ ठीक है!


2
यह मददगार था क्योंकि यह पुराने संस्करणों को उजागर करता था जो इंस्टॉल किए गए थे। एक बार जब मैंने उन्हें शुद्ध किया तो सब कुछ ठीक हो गया। धन्यवाद!
जोश जॉनसन

ठीक है। मैं इसके लिए बहुत खुश हूं।
shgnInc

बहुत बढ़िया जवाब। मैंने अपनी सूची के माध्यम से जाना और इसे साफ कर दिया, फिर मुझे जो चाहिए था उसे पुनः स्थापित किया और रिबूट किया। देखा! +1
निकेलेलियस

7

मुझे एक बार यह समस्या हुई थी, और इसे ठीक करना आश्चर्यजनक रूप से आसान है।

निम्नलिखित पैची मेमोरी पर आधारित है इसलिए सावधान रहें!
सबसे पहले आपको यह देखने की जरूरत है कि एनवीडिया लाइब्रेरी / usr / lib32 / मैच में:

/usr/lib32/libOpenCL.so  
/usr/lib32/nvidia-current  
/usr/lib32/nvidia-current/libGL.la  
/usr/lib32/nvidia-current/libGL.so  
/usr/lib32/nvidia-current/libGL.so.1  
/usr/lib32/nvidia-current/libGL.so.270.41.06  
/usr/lib32/nvidia-current/libOpenCL.so  
/usr/lib32/nvidia-current/libOpenCL.so.1  
/usr/lib32/nvidia-current/libOpenCL.so.1.0  
/usr/lib32/nvidia-current/libOpenCL.so.1.0.0  
/usr/lib32/nvidia-current/libXvMCNVIDIA.so  
/usr/lib32/nvidia-current/libXvMCNVIDIA.so.1  
/usr/lib32/nvidia-current/libXvMCNVIDIA.so.270.41.06  
/usr/lib32/nvidia-current/libXvMCNVIDIA_dynamic.so.1  
/usr/lib32/nvidia-current/libcuda.so  
/usr/lib32/nvidia-current/libcuda.so.1  
/usr/lib32/nvidia-current/libcuda.so.270.41.06  
/usr/lib32/nvidia-current/libnvcuvid.so  
/usr/lib32/nvidia-current/libnvcuvid.so.1  
/usr/lib32/nvidia-current/libnvcuvid.so.270.41.06  
/usr/lib32/nvidia-current/libnvidia-cfg.so  
/usr/lib32/nvidia-current/libnvidia-cfg.so.1  
/usr/lib32/nvidia-current/libnvidia-cfg.so.270.41.06  
/usr/lib32/nvidia-current/libnvidia-compiler.so  
/usr/lib32/nvidia-current/libnvidia-compiler.so.1  
/usr/lib32/nvidia-current/libnvidia-compiler.so.270.41.06  
/usr/lib32/nvidia-current/libnvidia-glcore.so.270.41.06  
/usr/lib32/nvidia-current/libnvidia-ml.so  
/usr/lib32/nvidia-current/libnvidia-ml.so.1  
/usr/lib32/nvidia-current/libnvidia-ml.so.270.41.06  
/usr/lib32/nvidia-current/libnvidia-tls.so.270.41.06  
/usr/lib32/nvidia-current/libnvidia-wfb.so.270.41.06  
/usr/lib32/nvidia-current/tls  
/usr/lib32/nvidia-current/tls/libnvidia-tls.so.270.41.06  
/usr/lib32/nvidia-current/vdpau  
/usr/lib32/nvidia-current/vdpau/libvdpau.so.270.41.06  
/usr/lib32/nvidia-current/vdpau/libvdpau_nvidia.so  
/usr/lib32/nvidia-current/vdpau/libvdpau_nvidia.so.1  
/usr/lib32/nvidia-current/vdpau/libvdpau_nvidia.so.270.41.06  
/usr/lib32/nvidia-current/vdpau/libvdpau_trace.so.270.41.06  
/usr/lib32/vdpau 

आपके द्वारा वर्णित के अनुसार, वे सबसे अधिक संभावना है कि ये मेल नहीं खाते। यदि यह मामला है, तो आपको उन्हें हटाने की आवश्यकता है (सावधानी से - एक फ़ाइल प्रबंधक का उपयोग करें, rm -r-!!!!!!!!!!! ) का प्रयास न करें , और फिर nvidia-current :) को पुन: स्थापित करें।
यह आपको पुस्तकालयों के सही संस्करणों को देना चाहिए और आपको एक कार्य प्रणाली प्रदान करना चाहिए।


4

मुझे यह समस्या थी जो शराब में मेरे SWTOR लांचर को प्रभावित कर रही थी। ऊपर पढ़कर मैंने उबंटू यूआई के माध्यम से चीजों को करने की कोशिश करने का फैसला किया। यहाँ सरल समाधान है कि मेरे लिए काम किया है;

UI के माध्यम से अतिरिक्त ड्राइवरों को निकालें और पुनर्स्थापित करें:

  1. सिस्टम पर जाएं -> प्रशासन -> अतिरिक्त ड्राइवर
  2. NVIDIA त्वरित ग्राफिक्स ड्राइवर का चयन करें और "हटाएं" बटन दबाएं। IMMEDIATELY AFTER के बाद न करें।
  3. एक बार हटाए जाने के बाद, उसी ड्राइवर का चयन करें और "सक्रिय करें" पर क्लिक करें।
  4. अब रिबूट करें।
  5. तय होना चाहिए।

3

कुछ परीक्षणों के बाद मैंने पाया कि पैकेज:

nvidia-current
nvidia-304
nvidia-settings
nvidia-settings-304

सभी कर्नेल के लिए काम 3.2.0- * और 3.8.0- *,

जबकि पैकेज:

nvidia-current-updates
nvidia-experimental-304
nvidia-304-updates
nvidia-settings-updates
nvidia-settings-experimental-304
nvidia-settings-304-updates
nvidia-319
nvidia-experimental-310
nvidia-319-updates
nvidia-settings-319
nvidia-settings-experimental-310
nvidia-settings-319-updates

कर्नेल 3.8.0- * के लिए ही काम करें।

Ubuntu जॉकी अभी भी 319 संस्करण की सिफारिश करते हैं जब कर्नेल 3.2.0- * केवल मौजूद होते हैं। तो यहाँ एक बग।

इसके अलावा आदेश:

$ sudo apt-get purge nvidia-current
$ sudo apt-get install nvidia-current

या

$ sudo dpkg-reconfigure nvidia-current

प्रत्येक मामूली संस्करण के लिए कर्नेल के केवल एक संस्करण के लिए ड्राइवर स्थापित करें, और इसे अन्य सभी के लिए हटा दें।

तो, मेरे मामले में कि मैं निम्नलिखित गुठली स्थापित है:

3.8.0-32-generic
3.2.0-55-generic-pae
3.2.0-55-generic
3.2.0-54-generic-pae
3.2.0-54-generic
3.2.0-53-generic-pae
3.2.0-53-generic
3.2.0-52-generic-pae
3.2.0-52-generic
3.2.0-51-generic-pae
3.2.0-51-generic
3.2.0-49-generic-pae
3.2.0-49-generic

मुझे केवल ड्राइवर मिला:

3.8.0-32-generic
3.2.0-55-generic-pae

अन्य कर्नेल के साथ बूट करते समय, ड्राइवर परिणाम स्थापित नहीं होता है।

मुझे लगता है कि पैकेज में कहीं न कहीं केवल कुछ कर्नेल के निर्माण और स्थापित करने के लिए एक गलत संकेत है।

कहीं भी, निम्न आदेश जारी करने से स्थिति ठीक होती है:

$ sudo dkms install nvidia-304/304.88 -k 3.8.0-32-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-55-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-55-generic-pae
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-54-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-54-generic-pae
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-53-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-53-generic-pae
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-52-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-52-generic-pae
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-51-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-51-generic-pae
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-49-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-49-generic-pae

अगले एप्टीट्यूड में एनवीडिया-करंट या रीकंफिगर होने तक

थ्रेड: एनवीडिया ड्राइवर अपडेट किया गया - 304.88 और 319.32 के मिश्रित संस्करण उसी से संबंधित हैं, लेकिन मेरे पास वहां पोस्ट करने के लिए पर्याप्त क्रेडिट नहीं था।


1

मेरे द्वारा नवीनतम प्रायोगिक एनवीडिया ड्राइवर स्थापित करने के बाद मेरे साथ ऐसा हुआ। मैं अभी भी नवीनतम ड्राइवर की कोशिश करना चाहता था यदि संभव हो तो एक पुराने ड्राइवर को वापस करने के बजाय, इसलिए यह मेरे लिए काम कर रहा है:

sudo apt-get remove --purge nvidia*
sudo apt-get install nvidia-319
sudo reboot

0

सभी एनवीडिया पैकेजों को हटाना और फिर से इंस्टॉल करना वास्तव में इसे ठीक करने का सबसे आसान तरीका है।

सबसे पहले मैंने नीचे दिए कमांड के साथ सभी एनवीडिया पैकेज निकाले:

$ dpkg --get-selections | grep nvidia | awk '{print $1}' | xargs sudo apt-get -y purge

फिर मैंने हमारी जिज्ञासा का एक खंडन किया, यह देखने के लिए कि मेरा चित्रमय इंटरफ़ेस कैसा दिखाई देगा - खराब रिज़ॉल्यूशन और धीमा, जैसा कि अपेक्षित था।

एक खोल खोलने के बाद मैं एनवीडिया वापस स्थापित करने के लिए नीचे कमांड चलाता हूं:

$ sudo apt-get install nvidia-current
$ sudo reboot

सब कुछ फिर से काम करता है। सौभाग्य।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.