升級到 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
or /usr/sbin
、 or /bin
、 or/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
如果這有效,您可以安全地刪除可能是很久以前安裝的過時的可執行文件,而您已經遵循了一些您現在不記得的指南:)