[Prozedur-Memo] Installieren Sie Python3 + OpenSSL lokal unter Ubuntu

Schritte zum lokalen Installieren von Python 3 beim Beheben von OpenSSL-Fehlern ohne Administratorrechte.

Inhaltsverzeichnis

Motivation
  • Da die Umgebung des Servers mit GPGPU im Labor, das beim nächsten Mal verwendet werden soll, alt ist, das Betriebssystem alt ist, Python alt ist und OpenSSL ebenfalls alt ist, ist bei der Verwendung des global installierten Pip oder bei der Installation von Python ein OpenSSL-Fehler aufgetreten.
  • Es ist einfacher, die Umgebung zu verschieben, wenn die Dateien so weit wie möglich lokal angeordnet sind.
  • Es gibt auch eine Option namens Docker (nvidia-docker), aber es scheint, dass die Bauarbeiten für die Umgebung weiter zunehmen werden. + Vor allem ist es ärgerlich, weil bei der Image-Erstellung auf diesem Server überhaupt ein Fehler aufgetreten ist.

Umgebung / Bedingungen
  • Führen Sie keine Arbeiten aus, für die Administratorrechte erforderlich sind.
  • Das Home-Verzeichnis ist / home / user (nennen wir es).
  • Das Installationsziel ist / home / user / local und der Quellspeicherort ist / home / user / src.
  • Installationsziel: Python3.7.9 (3.8.6 war in Ordnung.)
  • Betriebssystem: Ubuntu14.04.6 LTS (alt)
$ cat /etc/issue
Ubuntu 14.04.6 LTS \n \l

Procedure

1. Laden Sie die erforderlichen Dateien herunter
$ cd /home/user/src
$ wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz
$ wget https://prdownloads.sourceforge.net/tcl/tcl8.6.10-src.tar.gz
$ wget https://prdownloads.sourceforge.net/tcl/tk8.6.10-src.tar.gz
$ wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz

2. Installieren Sie OpenSSL

Verwandte Aliase

/home/user/.bash_profile


alias targz="tar xzvf"
alias tarxz="tar xvf"
Installationsziel erstellen
$ mkdir /home/user/local/ssl
$ mkdir /home/user/local/ssl/1_1_1h
Installation
$ cd /home/user/src
$ targz openssl-1.1.1h.tar.gz
$ cd openssl-1.1.1h
$ ./config --prefix=/home/user/local/ssl/1_1_1h --openssldir=/home/user/local/ssl shared
$ make
$ make install

Bestätigung

/home/user/.bash_profile


Fügen Sie der Linkersuche lokales OpenSSL hinzu
LD_LIBRARY_PATH=/home/user/local/ssl/1_1_1h/lib:$LD_LIBRARY_PATH

alias /home/user/local/ssl/1_1_1h/bin/openssl
$ openssl version
OpenSSL 1.1.1h  22 Sep 2020
Wenn dies angezeigt wird, ist es erfolgreich (Übrigens ist global openssl 1.0.2)

3. Installieren Sie tcl, tk ``` $ cd /home/user/src $ targz tcl8.6.10.tar.gz $ targz tk8.6.10.tar.gz $ cd tcl8.6.10 $ mkdir build $ cd build $ ../unix/configure --prefix=/home/user/local/ $ make $ make install $ cd tk8.6.10 $ mkdir build $ cd build $ ../unix/configure --prefix=/home/user/local/ $ make $ make install ```

4. Installieren Sie Python

Verwandte Aliase (Funktionen) Es war mühsam, viele Male zu schreiben.

/home/user/.bash_profile


$ function pyconf (){
    ./configure --prefix=/home/user/local/$1 --with-ensurepip --with-openssl=/home/user/local/ssl/1_1_1h \
    --with-tcltk-includes="home/user/local/include" --with-tcltk-libs="/home/user/local/lib -ltcl8.6 -ltk8.6"
}
$ mkdir /home/user/local/python379
$ cd /home/user/src
$ pyconf python379
$ make
$ make install

5. Endgültige Bestätigung

/home/user/.bash_profile


alias python37="$HOME/local/python379/bin/python3.7"
alias pip37="$HOME/local/python379/bin/pip3.7"
$ python37
Python 3.7.9 (default, Nov  2 2020, 16:54:48)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>>
OK, wenn das SSL-Modul normal importiert werden kann
>>> exit()
$ pip37 install numpy
Überprüfen Sie auch, ob Pip verwendet werden kann

das ist alles.

Fehlersammlung

OpenSSL-Fehler bei der Installation von Python ``` Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host(). LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381 ``` Der Inhalt der Nachricht selbst ist, dass OpenSSL 1.0.2 bis 1.1 erforderlich ist, wie im Text angegeben. Dies wird jedoch angezeigt, obwohl OpenSSL anscheinend wie in Schritt 2 installiert wurde ( Wenn Sie bei der Installation Hunderte von Zeilen vor dem Ende der Ausgabe sehen, haben Sie Ihre lokale OpenSSL nicht gefunden, sodass bei der Konfiguration möglicherweise ein Fehler in --openssldir oder "shared" (this) aufgetreten ist. Es ist besser zu überprüfen, ob das Vorhandensein oder Nichtvorhandensein des Problems nicht überprüft wurde und ob die lokale OpenSSL im Suchziel des Linkers enthalten ist.

SSL-Fehler während der Pip-Installation
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
Could not fetch URL https://pypi.org/simple/numpy/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/numpy/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
ERROR: Could not find a version that satisfies the requirement numpy (from versions: none)
ERROR: No matching distribution found for numpy
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

Dies liegt auch daran, dass OpenSSL keine Verbindung zu Python herstellen kann. Überprüfen Sie die Installation von OpenSSL. Es sollte in Ordnung sein, wenn die Version mit "openssl version" korrekt angezeigt wird und das ssl-Modul mit dem Python-Interpreter importiert werden kann.

Referenz / Verwandte Seite

Eines Tages werde ich auch alle anderen Bibliotheken lokal installieren. .. ..

Recommended Posts