weidner/archives/2026/05/

Ubuntu 22.04 Python Downgrade

Vor Jahren hatte ich mir ein Ubuntu System 20.04 eingerichtet, welches ich zwar viel nutzte, für das ich aber keine Zeit zum Aktualisieren auf neuere Versionen fand. Denn das ging nur in-place, Neuinstallation war keine Option.

Schließlich fand ich die Zeit, um das System mit do-release-upgrade auf Version 22.04 anzuheben. Das lief einige Stunden, während derer ich andere Dinge zu erledigen hatte. Soweit schien das Upgrade erfolgreich durchgelaufen zu sein, bis ich das nächste Journal schreiben wollte und dabei bemerkte, dass vim-nox nicht mehr installiert war. Dieses Paket brauchte ich für die Vim-Plugins. Kein Problem dachte ich, sudo apt install vim-nox bringt es mir wieder auf das System. Leider nicht.

Vim-nox ist abhängig von libpython3.10, welches wiederum von libpython3.10-stdlib in Version 3.10.12-1~22.04.15 (momentan genau dieser) abhängig ist, während auf dem System die Version 3.10.18-1 installiert war. Diese hatte ich aus dem Deadsnake-PPA installiert, welches zwar beim Upgrade aus der sources.list entfernt wurde, die Python-Pakete jedoch nicht, weil sie neuer waren als die von Ubuntu 22.04.

Welcome to Dependency Hell.

Ich musste also ein Downgrade der Python-Pakete von Deadsnake machen. Und zwar gleichzeitig, damit apt keine systemrelevante Software deinstalliert.

Eine Recherche im Internet ergab zunächst wenig Brauchbares, das meiste lief auf Deinstallation der Pakete mit --force und anschließende Neuinstallation von Ubuntu hinaus. Ohne mich.

Schließlich fand ich in einem Reddit-Thread dann einen Weg, der Abhilfe ohne Neuinstallation erlaubte.

Als erstes listete ich die betroffenen Pakete auf:

apt list ~i~V3.10.18-1\*

Der '*' am Ende ist wichtig, da die Paketversion eine Tilde (~) enthält, nach der die Angaben zur Ubuntu-Version stehen. apt list interpretiert diese anscheinend als Anweisung im Muster und ganz ohne den Suffix passt das Match auch nicht. Mit \* funktionierte es gut genug.

Im nächsten Schritt simulierte ich das Downgrade, um zu sehen, was passiert:

sudo apt --simulate install ?and"(~i,~V3.10.18-1*)"=3.10.12-1\*

Es stellte sich heraus, dass es die Pakete python3.10-distutils und python3.10-lib2to3 nicht in Ubuntu 22.04 gibt (stattdessen gibt es python3-distutils und python3-lib2to3). Da kein Paket von diesen abhängig war, habe ich sie entfernt:

sudo apt purge python3.10-distutils python3.10-lib2to3

Danach zeigte die Simulation keinen Fehler mehr und ich konnte Python 3.10 auf die Version aus Ubuntu 22.04 herunterstufen:

sudo apt install ?and"(~i,~V3.10.18-1*)"=3.10.12-1\*

Damit konnte ich vim-nox installieren und die Vim-Plugins funktionieren nun wieder.

Posted 2026-05-25
Tags: