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.
~# 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.
~# 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.
~# ./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.
~# 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.
~# 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.
~# python3.12 --version
Mit diesem Befehl kann man nun prüfen, ob Python 3.12 korrekt installiert wurde und abrufbar ist.