usa tutorial que para instalar index funciona elastic crear consultas como comandos python gcc openssl

python - tutorial - para que se usa elastic search



¿Cómo compilo Python 3.4 con OpenSSL personalizado? (3)

Tengo mi propia instalación de OpenSSL en una ubicación no estándar ( /my/path por el bien de este ejemplo) y quiero que Python 3.4 se compile con eso cuando lo compilo en la fuente. Lo que intenté es esto (directorios abreviados)

CPPFLAGS="-I/my/path/include -I/my/path/include/openssl" ./configure --prefix=/my/path/

También probé con C_INCLUDE_PATH y rutas separadas por dos puntos.

Entonces, corro make y obtengo esto:

building ''_ssl'' extension gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I./Include -I. -IInclude -I/my/path/include -I/my/path/include/openssl -I/usr/local/include -I/my/path/Python-3.4.0/Include -I/my/path/Python-3.4.0 -c /my/path/Python-3.4.0/Modules/_ssl.c -o build/temp.linux-x86_64-3.4/my/path/Python-3.4.0/Modules/_ssl.o gcc -pthread -shared build/temp.linux-x86_64-3.4/my/path/Python-3.4.0/Modules/_ssl.o -L/my/path/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-3.4/_ssl.cpython-34m.so *** WARNING: renaming "_ssl" since importing it failed: build/lib.linux-x86_64-3.4/_ssl.cpython-34m.so: undefined symbol: SSL_get0_next_proto_negotiated

Está buscando SSL_get0_next_proto_negotiated , pero eso está definido:

$ grep SSL_get0_next_proto_negotiated /my/path/include/openssl/* /my/path/include/openssl/ssl.h:void SSL_get0_next_proto_negotiated(const SSL *s,

No estoy seguro de lo que estoy haciendo mal, ¿alguna idea?


Así lo resolví en 3.4. Es aplicable para 2.7 y 3.4. Lo importante es --with-ssl config argumento en ./configure:

wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz tar -xf Python-3.4.3.tgz cd Python-3.4.3/ sudo yum install gcc ./configure --with-ssl make && make install # If you like to live dangerously since this will overwrite default python executable make && make altinstall # Safer because you access your new Python using python3.4


Gracias a @ScottFrazer por su respuesta. Me salvó un montón de problemas.

Aquí hay un script que utilicé en ubuntu para compilar python con la openssl 1.0.2g más reciente de openssl 1.0.2g .

# new openssl install curl https://www.openssl.org/source/openssl-1.0.2g.tar.gz | tar xz && cd openssl-1.0.2g && ./config shared --prefix=/usr/local/ && make && make install # Python install script export LDFLAGS="-L/usr/local/lib/" export LD_LIBRARY_PATH="/usr/local/lib/" export CPPFLAGS="-I/usr/local/include -I/usr/local/include/openssl" apt-get update apt-get install build-essential checkinstall -y apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev -y cd /home/web/ wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz | tar xzf Python-2.7.11.tgz && cd Python-2.7.11 ./configure --prefix=/usr/local/ make altinstall

Tenga en cuenta que la instalación es una instalación alternativa, lo que significa que no anulará el python predeterminado en ubuntu. Para verificar que la instalación fue exitosa:

/usr/local/bin/python2.7 >>> import ssl >>> ssl.OPENSSL_VERSION ''OpenSSL 1.0.2g 1 Mar 2016''


Me las arreglé para averiguarlo después de tirar un montón de pelo. Fue un montón de variables de entorno ... Creo que podría haber hecho un poco de exageración, pero esto básicamente funcionó:

# OpenSSL 1.0.1g ./config shared --prefix=/my/path --openssldir=/my/path/openssl make make install # Python 3.4 export LDFLAGS="-L/my/path/lib/ -L/my/path/lib64/" export LD_LIBRARY_PATH="/my/path/lib/:/my/path/lib64/" export CPPFLAGS="-I/my/path/include -I/my/path/include/openssl" ./configure --prefix=/my/path/ make make install