Eine Aufzeichnung der Installation von openssl-1.0.2l unter OSX El Capitan.
Der Inhalt ist der gleiche wie Installiere openssl-1.0.2f unter OSX Yosemite und aktualisiere _ssl.so von Python.
OpenSSL von OSX El Capitan ist eine 0.9.8-Serie, die Unterstützung endete jedoch am 31. Dezember 2015. OS X El Capitan wird am 30. September 2015 veröffentlicht. Wie sieht es mit der Bündelung von OpenSSL 0.9.8zh aus, das Ende des Jahres EOL sein wird?
OS X El Capitans openssl ist übrigens für den Versionsbefehl
$ /usr/bin/openssl version
OpenSSL 0.9.8zh 14 Jan 2016
Gibt die Ausgabe zurück. Die verteilte OpenSSL 0.9.8zh gibt die Ausgabe "OpenSSL 0.9.8zh 14 Jan 2016" zurück, so dass anscheinend etwas getan wurde.
build openssl-1.0.2l
Erstellen Sie die 32-Bit-Version und die 64-Bit-Version separat und machen Sie sie mit Lipo zu Univesal Binary. Ich habe mich gefragt, ob ich es mit -arch x86_64 -xarch i386 mit der Kompilierungsoption multilib machen könnte, aber ich nehme diese Methode, weil die Kompilierung mir einen Fehler gibt.
$ ./Configure shared darwin64-x86_64-cc
$ make
Prüfung
$ make test
OK, wenn kein Fehler vorliegt
Installation Es wird in der Standardeinstellung / usr / local / ssl installiert.
$ sudo make install
$ cd /usr/local/ssl
$ sudo mkdir bin64
$ sudo sh -c 'cd bin && find . -print | cpio -pdmu ../bin64'
$ sudo mkdir lib64
$ sudo sh -c 'cd lib && find . -print | cpio -pdmu ../lib64'
Gehen Sie zurück zum Quellbaum und erstellen Sie die 32-Bit-Version
$ make clean
$ ./Configure shared darwin-i386-cc
$ make
Installation Es ist keine Dokumentation erforderlich. Führen Sie daher make install_sw aus.
$ sudo make install_sw
$ cd /usr/local/ssl
$ sudo mkdir bin32
$ sudo sh -c 'cd bin && find . -print | cpio -pdmu ../bin32'
$ sudo mkdir lib32
$ sudo sh -c 'cd lib && find . -print | cpio -pdmu ../lib32'
Erstellen Sie mit Lipo eine Univesal-Binärdatei.
$ cd /usr/local/ssl
$ sudo lipo -create bin{32,64}/openssl -output bin/openssl
$ sudo lipo -create lib{32,64}/libcrypto.a -output lib/libcrypto.a
$ sudo lipo -create lib{32,64}/libssl.a -output lib/libssl.a
$ find lib64 -type f -name '*.dylib' | while read file ; do echo lipo -create $(echo "$file" | sed 's/64/{32,64}/') -output $(echo "$file" | sed 's/64//'); done | sudo sh
$ sudo rm -r bin{32,64} lib{32,64}
Wenn Sie beim Erstellen von Programmen in Zukunft openssl in / usr / local / ssl verwenden, wird openssl der 1.0.2-Serie verknüpft.
Aktualisieren Sie die Python-SSL-Bibliothek. Beachten Sie, dass, wenn die Entwicklungsumgebung nicht "xcode-select --install" ist, "configure" den Header nicht findet und ein Fehler auftritt.
$ sudo xcode-select --install
Password:
xcode-select: note: install requested for command line developer tools
Rufen Sie die Quelldatei von https://www.python.org/downloads/release/python-2710/ ab.
tar xfz Python-2.7.10.tgz
cd Python-2.7.10
CC=cc \
CPPFLAGS=-I/usr/local/ssl/include \
LDFLAGS='-L/usr/local/ssl/lib -Wl,-rpath,/usr/local/ssl/lib' \
./configure --enable-framework --enable-universalsdk --with-universal-archs=intel
$ make
In der Tat ist alles, was ich will, "_ssl.so".
$ find . -name _ssl.so
./build/lib.macosx-10.5-intel-2.7/_ssl.so
Diese _ssl.so
sollte geladen werden, wenn Sie ssl` in Python importieren.
$ sudo mkdir /Library/Python/2.7/lib-dynload
$ sudo cp build/lib.macosx-10.5-intel-2.7/_ssl.so /Library/Python/2.7/lib-dynload
Erstellen Sie eine sitecustomize.py wie diese und fügen Sie Ihrem Suchpfad /Library/Python/2.7/lib-dynload hinzu.
/Library/Python/2.7/site-packages/sitecustomize.py
import sys
sys.path.insert(0, '/Library/Python/2.7/lib-dynload')
Funktionsprüfung.
$ python
>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 1.0.2l 25 May 2017'
Recommended Posts