मैंने CentOS 7 पर सॉफ्टवेयर कलेक्शंस द्वारा पायथन 3.5 स्थापित किया । यह सब अपने आप ठीक हो गया, लेकिन मैंने इस प्रश्न में उल्लिखित साझा पुस्तकालय त्रुटि देखी जब मैंने एक साधारण सीजीआई स्क्रिप्ट चलाने की कोशिश की:
tail /var/log/httpd/error_log
AH01215: /opt/rh/rh-python35/root/usr/bin/python: error while loading shared libraries: libpython3.5m.so.rh-python35-1.0: cannot open shared object file: No such file or directory
मैं एक ऐसे सिस्टम परमानेंट सॉल्यूशन चाहता था, जो सभी यूजर्स के लिए काम करे, ताकि एक्सपोर्ट स्टेटमेंट को .profile या .bashrc फाइल्स में शामिल न किया जाए। Red Hat समाधान पृष्ठ पर आधारित एक एक पंक्ति समाधान है । टिप्पणी के लिए धन्यवाद जो इसे इंगित करता है:
echo 'source scl_source enable rh-python35' | sudo tee --append /etc/profile.d/python35.sh
पुनः आरंभ करने के बाद, शेल पर यह सब अच्छा है, लेकिन कभी-कभी मेरा वेब सर्वर अभी भी शिकायत करता है। एक और दृष्टिकोण है जो हमेशा शेल और सर्वर दोनों के लिए काम करता है, और अधिक सामान्य है। मैंने यहां समाधान देखा और फिर महसूस किया कि यह वास्तव में यहां भी एक उत्तर में वर्णित है! वैसे भी, CentOS 7 पर, ये चरण हैं:
vim /etc/ld.so.conf
जो मेरी मशीन पर बस था:
include ld.so.conf.d/*.conf
इसलिए मैंने एक नई फ़ाइल बनाई:
vim /etc/ld.so.conf.d/rh-python35.conf
और जोड़ा:
/opt/rh/rh-python35/root/usr/lib64/
और कैश को मैन्युअल रूप से पुनर्निर्माण करने के लिए:
sudo ldconfig
यही है, स्क्रिप्ट ठीक काम!
यह एक अस्थायी समाधान था, जो रीबूट में काम नहीं करता था:
sudo ldconfig /opt/rh/rh-python35/root/usr/lib64/ -v
-V (क्रिया) विकल्प सिर्फ यह देखने के लिए था कि क्या चल रहा है। मैंने देखा कि इसने किया: / ऑप्ट / आरएच / आरएच-पाइथन 35 / रूट / यूएसआर / लीबी 64: libpython3.so.rh-python35 -> libpython3.so.rh-python35 libpython3.5m.so.rh-python35-1-1। libpython3.5m.so.rh-python35-1.0
यह विशेष त्रुटि दूर हो गई। संयोग से, मुझे chownउपयोगकर्ता को उसके बाद एक अनुमति त्रुटि से छुटकारा पाने के लिए अपाचे करना पड़ा ।
ध्यान दें कि मैं प्रयोग किया जाता है खोजने के पुस्तकालय के लिए निर्देशिका का पता लगाने की। आप भी कर सकते हैं:
sudo yum install mlocate
sudo updatedb
locate libpython3.5m.so.rh-python35-1.0
मेरे वीएम रिटर्न पर कौन सा:
/opt/rh/rh-python35/root/usr/lib64/libpython3.5m.so.rh-python35-1.0
जो कि मुझे ldconfig को देने की आवश्यकता है, जैसा कि ऊपर दिखाया गया है।