답변:
만료 된 저장소 키 및 해당 ID를 찾으려면 apt-key
다음과 같이 사용하십시오 .
LANG=C apt-key list | grep expired
다음과 유사한 결과가 나타납니다.
pub 4096R/BE1DB1F1 2011-03-29 [expired: 2014-03-28]
키 ID는 이 경우 /
즉 이후의 비트 BE1DB1F1
입니다.
키를 업데이트하려면 다음을 실행하십시오.
sudo apt-key adv --recv-keys --keyserver keys.gnupg.net BE1DB1F1
참고 : 패키지 관리자가 아직 새 키를 업로드하지 않은 경우 키를 업데이트 해도 작동하지 않습니다. 이 경우 관리자에게 연락하거나 배포판에 버그를 신고하는 것 외에는 할 수있는 일이 거의 없습니다.
만료 된 모든 키를 업데이트하는 하나의 라이너 : (@ryanpcmcquen 덕분에)
for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done
for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done
새로운 키를 가져 와서 추가해야합니다.이 시점에서 apt는이를 감지하고 불평하지 않습니다. 이것은 일반적으로 발생하지 않지만 때로는 발생합니다. 실제로 필요한 것은 추가해야 할 키의 16 진 코드를 아는 것입니다. 일단 당신이 그것을 가지고, 그것은 거기에서 거의 내리막입니다.
몇 가지 예 :
백 포트를위한 키 추가 : 처음 몇 줄은 원하는 키를 가져야하지만 나중에 몇 줄입니다.
온 SecureAPT에 대한 데비안 위키 , 내가 포함 된 줄 제거해야 것으로 나타났습니다 non-us
/etc/apt/sources.list 파일에서합니다.
나는 실제로 그렇게했고 효과가있었습니다.
이 오류의 발생 가능성은 적지 만 때로는 가능한 한 가지 이유는 다른 만료 날짜로 동일한 키를 두 번 추가 한 경우입니다. 이 답변이 귀하와 관련이 있으려면 그렇게했을 것입니다.
나 자신의 키로 자신의 저장소를 호스팅 할 때와 마찬가지로 이런 일이 발생할 수 있습니다. 키가 만료 되려고 할 때 단순히 키 대신 수명을 연장하고 미리 설정을 사용하여 원래 키를 설치했지만 deb 패키지를 사용하여 업데이트 된 키를 설치 한 경우 이전 키는 /etc/apt/trusted.gpg
새 키에있는 반면 아래에 별도의 파일로 끝납니다 /etc/apt/trusted.gpg.d/
. 이전 키는 새 키를 음영 처리하며이 키는 완전히 무시됩니다 apt-key
. 을 실행하여 이전 키를 제거하면 gpg --keyring /etc/trusted.gpg --delete-keys <keyid>
새 키가 감지됩니다.
이것은 약간의 비표준 코너 구성이지만, 내가 한 것과 같은 이유로 다른 사람 이이 문제를 겪을 경우 내 대답이 혼란을 덜 수 있기를 바랍니다.
더 간단한 oneliner :
for key in $(sudo apt-key list | awk -v FS='[ /:]+' '/expire[sd]/ {print $3}'); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $key; done
나는 당신이 cut
두 번 이상 사용하는 것과 같은 일을한다면 더 좋은 도구가 있다고 생각합니다. (또한 다른 질문 에 따라 이것을 만들었습니다 .)