Saya menginstal Python 3.5 oleh Software Collections di CentOS 7 minimal. Semuanya bekerja dengan baik sendiri, tetapi saya melihat kesalahan pustaka bersama yang disebutkan dalam pertanyaan ini ketika saya mencoba menjalankan skrip CGI sederhana:
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
Saya menginginkan solusi permanen sistemwide yang berfungsi untuk semua pengguna, sehingga tidak termasuk menambahkan pernyataan ekspor ke file .profile atau .bashrc. Ada solusi satu baris, berdasarkan halaman solusi Red Hat . Terima kasih atas komentar yang menunjukkan:
echo 'source scl_source enable rh-python35' | sudo tee --append /etc/profile.d/python35.sh
Setelah restart, semuanya baik-baik saja, tetapi kadang-kadang server web saya masih mengeluh. Ada pendekatan lain yang selalu bekerja untuk shell dan server, dan lebih umum. Saya melihat solusinya di sini dan kemudian menyadari itu sebenarnya disebutkan dalam salah satu jawaban di sini juga! Bagaimanapun, pada CentOS 7, ini adalah langkah-langkahnya:
vim /etc/ld.so.conf
Yang di komputer saya baru saja:
include ld.so.conf.d/*.conf
Jadi saya membuat file baru:
vim /etc/ld.so.conf.d/rh-python35.conf
Dan menambahkan:
/opt/rh/rh-python35/root/usr/lib64/
Dan untuk membangun kembali cache secara manual:
sudo ldconfig
Itu saja, skrip bekerja dengan baik!
Ini adalah solusi sementara, yang tidak bekerja lintas reboot:
sudo ldconfig /opt/rh/rh-python35/root/usr/lib64/ -v
Opsi -v (verbose) hanya untuk melihat apa yang sedang terjadi. Saya melihat bahwa ia melakukannya: / 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
Kesalahan khusus ini hilang. Kebetulan, saya harus chownpengguna untuk apache untuk menyingkirkan kesalahan izin setelah itu.
Perhatikan bahwa saya menggunakan find untuk mencari direktori untuk perpustakaan. Anda juga bisa:
sudo yum install mlocate
sudo updatedb
locate libpython3.5m.so.rh-python35-1.0
Yang di VM saya kembali:
/opt/rh/rh-python35/root/usr/lib64/libpython3.5m.so.rh-python35-1.0
Yang merupakan jalur yang perlu saya berikan kepada ldconfig, seperti yang ditunjukkan di atas.