J'ajoute python 2.7.13 comme altinstall en installant le code source sur ma boîte RHEL4 avec
wget --no-check-certificate https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
tar -xvzf Python2.7.13.tar.xz
cd Python2.7.13
./configure --with-ensurepip=install
make
make test
make altinstall
afin que je n'écrase pas le défaut python qui est requis pour une autre utilisation. Python 2.7.13 s'installerait avec succès mais manquait plusieurs modules essentiels pour le projet) Je travaille.
À l'origine, les modules _ssl et _haslib comportaient des erreurs dans cette section.
Python build finished, but the necessary bits to build these modules were not found:
_bsddb _sqlite3 _tkinter
bsddb185 dbm dl
gdbm imageop sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
J'ai installé openssl et je me suis assuré qu'ils se trouvaient à l'emplacement par défaut qui python les cherchait, alors maintenant j'ai les bits nécessaires mais ça se termine par ce message à la place
Failed to build these modules:
_hashlib _ssl
Vous trouverez ci-dessous l'intégralité de la sortie du python2.7 setup.py build
à partir du package décompressé python. J'ai parcouru Google et partout où je peux trouver, mais je n'ai rien réussi jusqu'à présent
running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers
building '_ssl' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/ssl/include -I. -IInclude -I./Include -I/usr/local/include -I/usr/local/include/python2.7 -c /Python/Modules/_ssl.c -o build/temp.linux-x86_64-2.7/Python/Modules/_ssl.o
/Python/Modules/_ssl.c:57: warning: ignoring #pragma GCC diagnostic
/Python/Modules/_ssl.c: In function ‘_setup_ssl_threads’:
/Python/Modules/_ssl.c:4012: warning: comparison is always false due to limited range of data type
gcc -pthread -shared build/temp.linux-x86_64-2.7/Python/Modules/_ssl.o -L/usr/local/ssl/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.7/_ssl.so
/usr/bin/ld: /usr/local/ssl/lib/libssl.a(s3_meth.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libssl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
building '_hashlib' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/ssl/include -I. -IInclude -I./Include -I/usr/local/include -I/usr/local/include/python2.7 -c /Python/Modules/_hashopenssl.c -o build/temp.linux-x86_64-2.7/Python/Modules/_hashopenssl.o
gcc -pthread -shared build/temp.linux-x86_64-2.7/Python/Modules/_hashopenssl.o -L/usr/local/ssl/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.7/_hashlib.so
/usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(o_names.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libcrypto.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
Python build finished, but the necessary bits to build these modules were not found:
_bsddb _sqlite3 _tkinter
bsddb185 dbm dl
gdbm imageop sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
Failed to build these modules:
_hashlib _ssl
running build_scripts
Lorsque j'essaie d'utiliser pip installé avec mon python 2.7.13, j'obtiens une erreur SSL, donc j'ai installé tous mes packages et autres modules à partir de la source comme cx_Oracle et CherryPy.
pip2.7 install cffi
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting cffi
Could not fetch URL https://pypi.python.org/simple/cffi/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
Could not find a version that satisfies the requirement cffi (from versions: )
No matching distribution found for cffi
J'ai également essayé d'ajouter manuellement le module ssl avec
wget --no-check-certificate https://pypi.python.org/packages/83/21/f469c9923235f8c36d5fd5334ed11e2681abad7e0032c5aba964dcaf9bbb/ssl-1.16.tar.gz#md5=fb12d335d56f3c8c7c1fefc1c06c4bfb
tar -xvzf ssl-1.16.tar.gz
cd ssl-1.16
python2.7 setup.py build
Mais je reçois une erreur indiquant qu'il ne doit pas être utilisé avec python past 2.6
Traceback (most recent call last):
File "setup.py", line 12, in <module>
+ "or earlier.")
ValueError: This extension should not be used with Python 2.6 or later (already built in), and has not been tested with Python 2.3.4 or earlier.
[~ # ~] modifier [~ # ~]
Je cherchais des solutions et après avoir passé au peigne fin les sorties du setup.py build
et j'ai trouvé quelqu'un avec un problème similaire qui semble être lié à openssl ici donc j'ai reconstruit mon openssl avec
./config enable-shared
make
make test
make install
et maintenant j'obtiens une erreur légèrement différente à propos du module ssl, suis-je en train de bousiller mon environnement de plus en plus?
python2.7 setup.py build
running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers
building '_ssl' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/ssl/include -I. -IInclude -I./Include -I/usr/local/include -I/usr/local/include/python2.7 -c /Python/Modules/_ssl.c -o build/temp.linux-x86_64-2.7/Python/Modules/_ssl.o
/Python/Modules/_ssl.c:57: warning: ignoring #pragma GCC diagnostic
/Python/Modules/_ssl.c: In function ‘_setup_ssl_threads’:
/Python/Modules/_ssl.c:4012: warning: comparison is always false due to limited range of data type
gcc -pthread -shared build/temp.linux-x86_64-2.7/Python/Modules/_ssl.o -L/usr/local/ssl/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.7/_ssl.so
*** WARNING: renaming "_ssl" since importing it failed: libssl.so.1.0.0: cannot open shared object file: No such file or directory
building '_hashlib' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/ssl/include -I. -IInclude -I./Include -I/usr/local/include -I/usr/local/include/python2.7 -c /Python/Modules/_hashopenssl.c -o build/temp.linux-x86_64-2.7/Python/Modules/_hashopenssl.o
gcc -pthread -shared build/temp.linux-x86_64-2.7/Python/Modules/_hashopenssl.o -L/usr/local/ssl/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.7/_hashlib.so
*** WARNING: renaming "_hashlib" since importing it failed: libssl.so.1.0.0: cannot open shared object file: No such file or directory
Python build finished, but the necessary bits to build these modules were not found:
_bsddb _sqlite3 _tkinter
bsddb185 dbm dl
gdbm imageop sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
Failed to build these modules:
_hashlib _ssl
running build_scripts
Le nouveau message d'avertissement dans la sortie *** WARNING: renaming "_ssl" since importing it failed: libssl.so.1.0.0: cannot open shared object file: No such file or directory
indique que le fichier n'existe pas mais je le vois dans/usr/local/ssl/lib/comme libssl.so.1.0.0 et je peux le trouver avec une recherche
find / -name libssl.so.1.0.0
/usr/local/ssl/lib/libssl.so.1.0.0
/tmp/openssl-1.0.2l/libssl.so.1.0.0
Eh bien, je ne sais pas si je dois me sentir stupide et c'est juste une chose courante que j'ai complètement ignoré, car je suis relativement nouveau sur Linux CLI. Mais, j'ai pu résoudre mon erreur de génération pour les modules _hashlib et _ssl en quelques étapes simples dans https://stackoverflow.com/a/28460293/8222554 la réponse d'Amo.
J'ai d'abord tenté le ldconfig
mais cela n'a pas résolu mon problème, j'ai donc simplement regardé ce qu'il y avait dans mon LD_LIBRARY_PATH avec
echo $LD_LIBRARY_PATH
puis récupéré ces emplacements qui n'incluaient pas où se trouvait le fichier libssl.so.1.0.0
/usr/lib/Oracle/11.2/client64/lib:/usr/lib/Oracle/11.2/client/lib
Ensuite, j'ai suivi les étapes que j'avais faites précédemment lors de l'installation du client instantané Oracle et du module cx_Oracle qui étaient facilement présentés sur ce billet de blog: https://ubuntugeeknerd.blogspot.com/2013/08/how-to -install-oxoracle-in-rhel-64-bit.html
Ces étapes que j'ai utilisées pour le module ssl étaient les suivantes
export LD_LIBRARY_PATH=/usr/local/ssl/lib/:$LD_LIBRARY_PATH >> ~/.bashrc
echo $LD_LIBRARY_PATH
/usr/local/ssl/lib/:/usr/lib/Oracle/11.2/client64/lib:/usr/lib/Oracle/11.2/client/lib
Après cela, j'ai fait python2.7 setup.py clean
suivi par python2.7 setup.py build
enfin python2.7 setup.py install
. La sortie n'a retourné aucun échec de construction en plus de ceux pour lesquels je n'avais pas les bits nécessaires (et je ne cherchais pas à construire de toute façon).
Je peux vérifier que le module ssl est là maintenant lors de l'ouverture de python et de l'importation du module avec succès
Python 2.7.13 (default, Jun 26 2017, 15:21:33)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>>
J'espère que cela sera pratique pour quelqu'un qui rencontre un problème similaire