У меня возникла проблема с Certbot после обновления до Ubuntu 22.04. Я пытался переустановить Certbot, но безуспешно. Затем я попытался установить Certbot с помощью snap, и у меня та же проблема:
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
, который, вероятно, был установлен давным-давно, когда вы следовали какому-то руководству, которое сейчас не можете вспомнить :)