Я встановив Python 3.5 програмою Колекції програмного забезпечення на CentOS 7 мінімальний. Це все добре спрацювало самостійно, але я побачив помилку спільної бібліотеки, згадану в цьому питанні, коли я спробував запустити простий сценарій CGI:
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 (багатослівний) повинен був просто побачити, що відбувається. Я бачив, що це робив: / 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
Ця конкретна помилка пішла. Між іншим, мені довелося chownкористувачеві апашіти, щоб позбутися помилки дозволу після цього.
Зауважте, що я використовував пошук, щоб знайти каталог для бібліотеки. Ви також можете зробити:
sudo yum install mlocate
sudo updatedb
locate libpython3.5m.so.rh-python35-1.0
Що в моєму VM повертає:
/opt/rh/rh-python35/root/usr/lib64/libpython3.5m.so.rh-python35-1.0
Який шлях я повинен пройти до ldconfig, як показано вище.