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
이것이 작동한다면, 지금은 기억할 수 없는 몇 가지 가이드를 따랐지만 아마도 오래 전에 설치되었을 수 있는 오래된 실행 파일을 안전하게 제거할 수 있습니다 . :)