升级到 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
您可以尝试通过第二个(或第三个)命令的完整路径调用它来更新您的证书 - 即/usr/bin/certbot
。
如果此方法有效,您可以安全地删除过时的可执行文件/usr/local/bin/certbot
,该文件可能是在您遵循某些您现在不记得的指南时很久以前安装的:)