Centios 7 üzerine Python 3.5'i Software Collections tarafından yükledim . Her şey kendi başına iyi çalıştı, ancak basit bir CGI betiği çalıştırmayı denediğimde bu soruda belirtilen paylaşılan kütüphane hatasını gördüm:
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
Tüm kullanıcılar için çalışan, .profile veya .bashrc dosyalarına dışa aktarma ifadeleri eklenmesini engelleyen sistem çapında kalıcı bir çözüm istedim. Red Hat çözümleri sayfasına dayanan tek satırlık bir çözüm var . Dikkat çeken yorum için teşekkürler:
echo 'source scl_source enable rh-python35' | sudo tee --append /etc/profile.d/python35.sh
Yeniden başlattıktan sonra her şey iyi durumda, ancak bazen web sunucum hala şikayet ediyor. Hem kabuk hem de sunucu için her zaman çalışan ve daha genel olan başka bir yaklaşım var. Buradaki çözümü gördüm ve daha sonra buradaki yanıtlardan birinde de belirtildiğini fark ettim! Her neyse, CentOS 7'de, adımlar şunlardır:
vim /etc/ld.so.conf
Hangi benim makinede vardı:
include ld.so.conf.d/*.conf
Bu yüzden yeni bir dosya oluşturdum:
vim /etc/ld.so.conf.d/rh-python35.conf
Ve ekledi:
/opt/rh/rh-python35/root/usr/lib64/
Önbelleği manuel olarak yeniden oluşturmak için:
sudo ldconfig
İşte bu, scriptler iyi çalışıyor!
Bu, yeniden başlatmalarda çalışmayan geçici bir çözümdü:
sudo ldconfig /opt/rh/rh-python35/root/usr/lib64/ -v
-V (ayrıntılı) seçeneği sadece neler olduğunu görmekti. Bunu yaptığını gördüm: / opt / rh / rh-python35 / root / usr / lib64: libpython3.so.rh-python35 -> libpython3.so.rh-python35 libpython3.5m.so.rh-python35-1.0 -> libpython3.5m.so.rh-python35-1.0
Bu hata ortadan kalktı. Bu arada, chownbir izin hatası kurtulmak için apache kullanıcı vardı .
Kütüphane dizinini bulmak için find komutunu kullandığımı unutmayın . Ayrıca şunları da yapabilirsiniz:
sudo yum install mlocate
sudo updatedb
locate libpython3.5m.so.rh-python35-1.0
Hangi benim VM döner:
/opt/rh/rh-python35/root/usr/lib64/libpython3.5m.so.rh-python35-1.0
Yukarıda gösterildiği gibi ldconfig dosyasına vermem gereken yol budur.