Ubuntu 22.04 にアップグレードした後、Certbot に問題が発生しました。Certbot を再インストールしようとしましたが、成功しませんでした。次に、snap を使用して Certbot をインストールしようとしましたが、同じ問題が発生しました。
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
ドメインの証明書を更新できません。どうすれば解決できますか?
答え1
質問で提供されているエラー メッセージ内で、問題のある Certbot の実行可能ファイルは であることに気付きました/usr/local/bin/certbot
。
通常、実行ファイルは/usr/local/bin
、カスタムインストールによってインストールされ、変数のデフォルト構造のため、パッケージ マネージャーによってインストールされたものよりも優先されます$PATH
。これを確認するには、次のコマンドを実行します。
echo $PATH
一方、 でインストールされたパッケージは、や、、 などの他のディレクトリ、 パッケージの場合はなどapt
で見つかります。/usr/bin
/usr/sbin
/bin
/snap/bin
snap
そのため、コマンドの異なるバージョン (同じ名前) が、 に属する異なるディレクトリに存在する可能性があります$PATH
。どれが他のものより優先されるかを確認するには、次のコマンドを使用します。
which certbot
certbot
ディレクトリ内で指定されたすべての実行可能ファイルの場所を見つけるには、$PATH
次のコマンドを使用します。
which -a certbot
上記のコマンドが複数の行を出力する場合 - 例:
/usr/local/bin/certbot
/usr/bin/certbot
/bin/certbot
2 番目 (または 3 番目) のコマンドを完全なパスで呼び出すことで、証明書の更新を試みることができます (つまり、 ) /usr/bin/certbot
。
/usr/local/bin/certbot
これが機能する場合は、おそらくかなり前に何らかのガイドに従ってインストールされた、今は思い出せない古い実行ファイルを安全に削除できます:)