Tenho um problema com o Certbot após atualizar para o Ubuntu 22.04. Tentei reinstalar o Certbot sem sucesso. Então tentei instalar o Certbot com snap e estou com o mesmo problema:
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
Não consigo renovar certificados para meus domínios. Como posso resolver isto?
Responder1
Na mensagem de erro fornecida na pergunta, notei que o executável problemático do Certbot é /usr/local/bin/certbot
.
Normalmente os arquivos executáveis localizados /usr/local/bin
são uma espécie depersonalizadoinstalações e elas têm precedência sobre aquelas instaladas pelos gerenciadores de pacotes, devido à estrutura padrão da $PATH
variável - para verificá-la execute:
echo $PATH
Por outro lado, os pacotes instalados apt
podem ser encontrados em outros diretórios como /usr/bin
ou /usr/sbin
, ou /bin
, ou /snap/bin
para os snap
pacotes, etc.
Portanto, versões diferentes de um comando (com o mesmo nome) podem existir em diretórios diferentes que pertencem ao seu arquivo $PATH
. Para descobrir qual deles tem precedência sobre os outros você pode usar o comando:
which certbot
Para encontrar a localização de todos os arquivos executáveis nomeados certbot
nos diretórios, $PATH
use o comando:
which -a certbot
Num caso, o comando acima gera mais de uma linha - por exemplo:
/usr/local/bin/certbot
/usr/bin/certbot
/bin/certbot
Você pode tentar renovar seus certificados pelo segundo (ou terceiro) comando chamando-o com seu caminho completo - ou seja /usr/bin/certbot
, .
Se isso funcionar, você pode remover com segurança o executável obsoleto /usr/local/bin/certbot
que provavelmente foi instalado há muito tempo, enquanto você seguiu algum guia do qual não consegue se lembrar agora :)