Ich habe ein Problem mit Certbot nach dem Upgrade auf Ubuntu 22.04. Ich habe erfolglos versucht, Certbot neu zu installieren. Dann habe ich versucht, Certbot mit Snap zu installieren, und ich habe das gleiche Problem:
certbot --version
Traceback (most recent call last):
File "/usr/local/bin/certbot", line 33, in <module>
sys.exit(load_entry_point('certbot', 'console_scripts', 'certbot')())
File "/usr/local/bin/certbot", line 22, in importlib_load_entry_point
for entry_point in distribution(dist_name).entry_points
File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 957, in distribution
return Distribution.from_name(distribution_name)
File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 548, in from_name
raise PackageNotFoundError(name)
importlib.metadata.PackageNotFoundError: No package metadata was found for certbot
Ich kann die Zertifikate für meine Domänen nicht erneuern. Wie kann ich das Problem lösen?
Antwort1
In der in der Frage bereitgestellten Fehlermeldung ist mir aufgefallen, dass die problematische ausführbare Datei von Certbot lautet /usr/local/bin/certbot
.
Normalerweise sind die ausführbaren Dateien in /usr/local/bin
eine ArtBrauchInstallationen und sie haben Vorrang vor denen, die von den Paketmanagern installiert wurden, aufgrund der Standardstruktur der $PATH
Variable - um dies zu überprüfen, führen Sie Folgendes aus:
echo $PATH
Andererseits apt
könnten mit installierte Pakete in anderen Verzeichnissen wie /usr/bin
oder /usr/sbin
, oder /bin
, oder /snap/bin
für die snap
Pakete usw. gefunden werden.
Daher können verschiedene Versionen eines Befehls (mit demselben Namen) in verschiedenen Verzeichnissen vorhanden sein, die zu Ihrem gehören $PATH
. Um herauszufinden, welche Version Vorrang vor den anderen hat, können Sie den folgenden Befehl verwenden:
which certbot
Um die Speicherorte aller ausführbaren Dateien certbot
in den Verzeichnissen zu finden $PATH
, verwenden Sie den folgenden Befehl:
which -a certbot
In einem Fall gibt der obige Befehl mehr als eine Zeile aus – zum Beispiel:
/usr/local/bin/certbot
/usr/bin/certbot
/bin/certbot
Sie können versuchen, Ihre Zertifikate mit dem zweiten (oder dritten) Befehl zu erneuern, indem Sie ihn mit dem vollständigen Pfad aufrufen, d. h /usr/bin/certbot
.
Wenn dies funktioniert, können Sie die veraltete ausführbare Datei sicher entfernen. /usr/local/bin/certbot
Diese wurde wahrscheinlich vor langer Zeit installiert, während Sie einer Anleitung gefolgt sind, an die Sie sich gerade nicht erinnern können :)