Instalé Python 3.5 de Software Collections en CentOS 7 minimal. Todo funcionó bien por sí solo, pero vi el error de biblioteca compartida mencionado en esta pregunta cuando intenté ejecutar un script CGI simple:
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
Quería una solución permanente para todo el sistema que funcionara para todos los usuarios, por lo que excluía agregar declaraciones de exportación a archivos .profile o .bashrc. Existe una solución de una línea, basada en la página de soluciones de Red Hat . Gracias por el comentario que lo señala:
echo 'source scl_source enable rh-python35' | sudo tee --append /etc/profile.d/python35.sh
Después de un reinicio, todo está bien en el shell, pero a veces mi servidor web todavía se queja. Hay otro enfoque que siempre funcionó tanto para el shell como para el servidor, y es más genérico. ¡Vi la solución aquí y luego me di cuenta de que en realidad también se menciona en una de las respuestas! De todos modos, en CentOS 7, estos son los pasos:
vim /etc/ld.so.conf
Que en mi máquina acaba de tener:
include ld.so.conf.d/*.conf
Entonces creé un nuevo archivo:
vim /etc/ld.so.conf.d/rh-python35.conf
Y agregado:
/opt/rh/rh-python35/root/usr/lib64/
Y para reconstruir manualmente el caché:
sudo ldconfig
Eso es todo, ¡los guiones funcionan bien!
Esta fue una solución temporal, que no funcionó en los reinicios:
sudo ldconfig /opt/rh/rh-python35/root/usr/lib64/ -v
La opción -v (detallada) era solo para ver lo que estaba sucediendo. Vi que sí: / 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
Este error en particular desapareció. Por cierto, tuve que hacer que chownel usuario apache para deshacerse de un error de permiso después de eso.
Tenga en cuenta que solía encontrar para ubicar el directorio de la biblioteca. También puedes hacer:
sudo yum install mlocate
sudo updatedb
locate libpython3.5m.so.rh-python35-1.0
Que en mi VM devuelve:
/opt/rh/rh-python35/root/usr/lib64/libpython3.5m.so.rh-python35-1.0
Cuál es el camino que necesito dar a ldconfig, como se muestra arriba.