¿Qué hace exactamente ./configure –enable-shared do durante la instalación de python altinstall?

Cuando altinstall python 2.7.12 con

./configure –prefix = / opt / python –enable-shared

aparece como python 2.7.5 (python predeterminado del sistema)

Pero sin

–enable-shared

aparece como 2.7.12, ¿qué me estoy perdiendo?

Esto es en RHEL 7.2


Esto no es un problema de pathing:

Sin –enable-shared

[root @ myrig ~] # /opt/python/bin/python2.7 -V

Python 2.7.12

Con –enable-shared

[root @ myrig ~] # /opt/python/bin/python2.7 -V

Python 2.7.5

Comstackr Python como este solucionó mi problema:

./configure --enable-shared --prefix=/opt/python LDFLAGS=-Wl,-rpath=/opt/python/lib 

Cortesía de Ned Deily:

El problema es que, en la mayoría de los sistemas Unix (con la notable excepción de Mac OS X), la ruta a las bibliotecas compartidas no es una ruta absoluta. Por lo tanto, si instala Python en una ubicación no estándar, lo que es correcto para no interferir con un sistema Python de la misma versión, deberá configurarlo en la ruta a la biblioteca compartida o suministrarlo a través de una variable de entorno en tiempo de ejecución, como LD_LIBRARY_PATH. Puede ser mejor que evites –enable-shared; Es fácil tener problemas como este con esto.

Ref: https://bugs.python.org/issue27685

No estoy seguro de por qué el número de versión es diferente, pero Graham Dumpleton dice en este sitio web que “Al ejecutar configure, debe proporcionar la opción –enable-shared para asegurarse de que las bibliotecas compartidas estén diseñadas para Python. Al no hacer esto está impidiendo que cualquier aplicación que quiera usar Python como un entorno integrado funcione “.

Con el comando ldd puede ver dónde el ejecutable está buscando bibliotecas:

 ldd python2.7 linux-vdso.so.1 => (0x00007fffa75ec000) libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f717042e000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7170211000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f716fe46000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f716fc2c000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f716fa28000) libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f716f824000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f716f51b000) /lib64/ld-linux-x86-64.so.2 (0x000055969d00b000)enter code here 

Puede cambiar la ruta de búsqueda lib de python2.7 configurando la variable LD_LIBRARY_PATH en el entorno (no persistente):

 export LD_LIBRARY_PATH=/opt/python/lib 

o estableciendo una forma persistente en todo el sistema:

 echo "/opt/python/lib" > /etc/ld.so.conf.d/python.conf ldconfig -v 

o estableciendo una forma ejecutable persistente:

 patchelf --set-rpath /opt/python/lib/ python2.7