IT-LINUXMAKER, OpenSource, Tutorials

Aktuelles Python3 neben der Debian-Version parallel installieren

Debian ist dafür bekannt, dass es sehr stabil in der Stable-Version läuft. Nur leider sind damit auch leider veraltete Software-Pakete verbunden, vor allem bedeutet das, dass wenn im Schnitt nur alle 2 Jahre die Stable-Version erneuert wird, man veraltete Softwarepakete hat. So läuft das aktuelle Debian noch mit einer Python-Version, die nicht mehr dem aktuellen Standard entspricht. Gleichzeitig sind andere Programmpakete von genau dieser Python-Version abhängig, während man von den neuen Features bei der Python-Progrmmierung profitieren will. Die Lösung könnte ein Systemupgrade auf “Testing” oder sogar “sid/Unstable” sein. Davon ist aber abzuraten, nicht umsont heißen diese Releases Testin und Unstable.

Eine elegantere Vorgehensweise ist das Installieren von Python 3.12.3 - geht auch mit jeder weiteren Version - aus dem Quellcode parallel zur systemeigenen Python-Version. Das System bleibt stabil, da die Standard-Python-Version nicht ersetzt wird, und man kann trotzdem mit der aktuellen Python-Version arbeiten, indem man explizit python3.12 aufruft bzw. in seiner IDE als Interpreter einstellt.

Systempakete aktualisieren und benötigte Entwicklungswerkzeuge installieren

~# apt update
~# apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl libbz2-dev libsqlite3-dev wget tk-dev liblzma-dev

Zunächst werden die Paketquellen aktualisiert, damit die neuesten verfügbaren Paketinformationen vorliegen. Danach werden verschiedene Entwicklungsbibliotheken und Compiler-Tools installiert, die nötig sind, um Python aus dem Quellcode zu kompilieren. Diese Bibliotheken sorgen dafür, dass Python später viele Funktionen (z.B. SSL, Datenbankzugriffe) unterstützt. Danach folgt der  Wechsel ins Verzeichnis /usr/src und der Download des aktuellen bwz. gewünschten Python-Quellcodes.

~# cd /usr/src
~# wget www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz

Das Verzeichnis /usr/src wird als Arbeitsverzeichnis gewählt, da dort üblicherweise Quellcodes für Systemsoftware abgelegt werden. Der Python-Quellcode selber wird in das aktuelle Verzeichnis als komprimiertes Archiv heruntergeladen.

Entpacken und Vorbereitung des Quellcodes

~# tar -xzf Python-3.12.3.tgz
~# cd Python-3.12.3

Das Archiv wird entpackt, wodurch der Ordner Python-3.12.3 entsteht, in den anschliessend gewechselt wird, um die Kompilierung vorzubereiten.

Build-Konfiguration

~# ./configure --enable-optimizations

Das Skript configure prüft die Systemumgebung und bereitet die Makefiles für den Kompilierungsprozess vor. Mit der Option --enable-optimizations werden zusätzliche Optimierungen beim Kompilieren aktiviert, z.B. durch das Einschalten von Profile-Guided Optimization (PGO). Dadurch wird die Laufzeitgeschwindigkeit von Python verbessert, allerdings dauert der Kompilierungsvorgang etwas länger.

Kompilieren des Quellcodes

~# make -j$(nproc)

Der Befehl make startet den Kompilierungsprozess. Dabei sorgt die Option -j$(nproc) dafür, dass so viele parallele Prozesse genutzt werden wie CPU-Kerne vorhanden sind. Das beschleunigt das Kompilieren erheblich.

 Installation von Python ohne Überschreiben der Standardversion

~# make altinstall

Der Befehl make altinstall installiert Python, ohne die bestehende System-Python-Version zu überschreiben. Das ist wichtig, weil Debian intern viele Systemtools an die Standard-Python-Version bindet, und ein Überschreiben zu Problemen führen kann. Dabei erstellt altinstall z.B. den Befehl python3.12 anstatt python3, so dass beide Versionen parallel genutzt werden können.

Überprüfung der installierten Python-Version

~# python3.12 --version

 Mit diesem Befehl kann man nun prüfen, ob Python 3.12 korrekt installiert wurde und abrufbar ist.