जवाबों:
libc.so
उबंटू 11.04 में मल्टीकार काम के हिस्से के रूप में स्थानांतरित किया गया था । कारण यह है कि वहाँ एक सिमलिंक नहीं हो सकता है मल्टीकार का उद्देश्य एक ही समय में दोनों i386
और amd64
संस्करणों को स्थापित करना संभव है libc
ताकि आप 64-बिट सिस्टम पर 32-बिट बायनेरिज़ को और अधिक आसानी से चला सकें और इसके विपरीत (और अन्य समान स्थितियों)। यदि libc6
पैकेज में नए स्थान के लिए एक सिमलिंक होता है, तो dpkg
व्यायाम के पूरे बिंदु को हराते हुए, अलग-अलग आर्किटेक्चर के लिए उस पैकेज के संस्करण एक ही समय में दोनों स्थापित करने योग्य नहीं होंगे ।
कुछ भी जो libc.so
उबंटू 11.04 से ठीक से काम करने के लिए पथ को हार्डकोड करने के लिए अद्यतन किया जाना चाहिए। यदि आप जिस स्क्रिप्ट के बारे में बात कर रहे हैं, वह उबंटू का हिस्सा है, कृपया इस पर एक बग रिपोर्ट करें और multiarch
टैग जोड़ें ।
/lib/libc.so.6
32 या 64 बिट लाइब्रेरी के बारे में कोई भ्रम नहीं है।
गतिशील पुस्तकालयों को कर्नेल द्वारा लोड किया जाता है, पथ एक प्रोग्राम में हार्डकोड नहीं किया जाता है। एक कार्यक्रम बस कहता है "मुझे libc.so.6 की आवश्यकता है"। सिस्टम तब लायब्रेरी पथों में खोज करता है /etc/ld.so.conf
, जिसमें डिफ़ॉल्ट रूप से परिभाषित /usr/lib
और /lib
सम्मिलित है। इस फ़ाइल में अतिरिक्त कॉन्फ़िगरेशन फ़ाइलें शामिल हैं /etc/ld.so.conf.d
।
मेरे 64 बिट सिस्टम पर, परिभाषित पथ के कारण libc.so.6
पाया जा सकता /lib/x86_64-linux-gnu/libc.so.6
है /etc/ld.so.conf.d/x86_64-linux-gnu.conf
:
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
पता लगाने के लिए पुस्तकालय के लिए एक कार्यक्रम से भरी हुई है, का उपयोग ldd
के रूप में ldd /bin/bash
:
linux-vdso.so.1 => (0x00007ffff1dff000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00007f9d8b3b8000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9d8b1b4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9d8ae1f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9d8b61c000)
सिमलिंक डालने से कुछ भी नहीं टूटेगा।
खोज की गई निर्देशिकाओं की सूची प्राप्त करने के लिए, दौड़ें:
ldconfig -v -N | grep '^/'
-v
दिखाई जाने वाली फ़ाइल + निर्देशिकाओं की एक सूची का कारण बनता है, -N
कैश ( /etc/ld.so.cache
) को फिर से बनाए जाने से रोकता है ।
/usr/local/lib
, लेकिन अगर मैं एक सिम्कलिन बनाता हूं तो वे ठीक काम करते हैं /usr/lib
। इस व्यवहार का क्या कारण है?
ldconfig -v -N | grep '^/'
?
निम्नांकित के रूप में बस libc.so.6 फ़ाइल में सिमलिंक जोड़ें:
sudo ln -s /lib/i386-linux-gnu/libc.so.6 /lib/libc.so.6
सिस्टम पर अभी भी अन्य लापता फ़ाइलों के लिए वही जाता है, मेरे मामले में मतलाब फाइल को याद कर रहा था, अब समस्या दूर हो गई है।