Wer aus gewissen Gründen ein Python 3 z.B. wie ich von 3.5 auf 3.6 „upgraden“ musste und mittels update-alternatives
dann auch Python 3.6 nutzt, stößt u.a. bei Certbot unter Debian 9 (Stretch) auf ein kleines Problem. Bei der Ausführung von certbot, kommt es bei fehlerhafter Konfiguration zur Fehlerausgabe ModuleNotFoundError: No module named '_cffi_backend'
.
Verlinken von Python 3.6 Site Packages zu Pypthon 3.5 Dist-Packages
Eine Möglichkeit ist, im Ordner /usr/local/lib/python3.6/site-packages/
einen Symbollink mittels ln -s /usr/lib/python3/dist-packages/_cffi_backend.cpython-35m-x86_64-linux-gnu.so _cffi_backend.cpython-36m-x86_64-linux-gnu.so
zu machen – vorausgesetzt, das Paket python3-cffi ist installiert. Allerdings ist Certbot schlau und meckert einen dann an, dass die installierte Version (bei mir 0.28.0) für Python 3.5 kompiliert wurde. Man setzt also hier einen Python 3.6 Symbollink auf eine Python 3.5 Datei.
Die Abhilfe
Sollte Python 3.5 weiterhin installiert sein, muss einfach nur die Certbot Datei angepasst werden.
Kleiner Hinweis am Rande: Ich musste, damit gewisse Programme auch wirklich Python 3.6 nutzen können (scheint bei Debian 9 irgendwie bissl scheps zu sein), musste ich /usr/bin/python3
auf /etc/alternatives/python3
verlinken, damit es auch wirklich die in den Alternativen angewählte Python-Version nutzt.
Damit Certbot weiterhin mit Python 3.5 ausgeführt wird, muss mittels nano /usr/bin/certbot
die 1. Zeile des Dateikopfes wie folgt angepasst werden:
Von
#!/usr/bin/python3
zu
#!/usr/bin/python3.5
Es gibt sicher sauberere Lösungen, doch für Debian gibt es keine gesonderte PPA wie für Ubuntu und Snap wollte bzw. will ich nicht installieren. Von Certbot wird nämlich die Installation über Snap empfohlen. Zwar zeigt Certbot noch andere alternative Installationen auf, allerdings funktioniert es auch so und sollte keine Nachteile bringen.