apt-get 업데이트 후 KEYEXPIRED 오류 메시지가 표시되면 어떻게해야합니까?


74

데비안 기반 시스템에서 패키지를 업데이트하는 동안

sudo apt-get update

그 오류 메시지가 있습니다.

Reading package lists... Done
W: GPG error: ftp://ftp.fr.debian.org stable/non-US Release: 
The following signatures were invalid: KEYEXPIRED 1138684904

이 문제를 해결하려면 어떻게해야합니까?

답변:


117

만료 된 저장소 키 및 해당 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

2
그것은 나를 위해 작동하지 않습니다, 키 업데이트 명령 후에도 키는 여전히 만료됩니다.
Karl Forner

@KarlForner가 성공한 열쇠를 추가하고 있었습니까?
kynan

예, 성공했습니다.
Karl Forner

4
하나의 라이너 :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
ryanpcmcquen

2
grep 부분에 대한 힌트 : "만료 됨"은 i18ned이므로 LANG * 설정에 따라 작동하지 않을 수 있습니다. 예를 들어 pl_PL.UTF-8 설정의 경우 "만료 됨"을 "wygasł"로 변경해야합니다. 작동하는 라이너.
Cromax

6

새로운 키를 가져 와서 추가해야합니다.이 시점에서 apt는이를 감지하고 불평하지 않습니다. 이것은 일반적으로 발생하지 않지만 때로는 발생합니다. 실제로 필요한 것은 추가해야 할 키의 16 진 코드를 아는 것입니다. 일단 당신이 그것을 가지고, 그것은 거기에서 거의 내리막입니다.

몇 가지 예 :


2

비슷한 오류가 있었지만 시스템 시간에 문제가있었습니다. 올해는 1961 년 :)

시스템 날짜 / 시간을 수정 한 후 전문가없이 업데이트 할 수 있습니다.


1

SecureAPT에 대한 데비안 위키 , 내가 포함 된 줄 제거해야 것으로 나타났습니다 non-us/etc/apt/sources.list 파일에서합니다.

나는 실제로 그렇게했고 효과가있었습니다.


5
이것은 특정한 경우에 효과가 있었지만 일반적인 해결책 은 아닙니다
kynan

1

날짜가 올바르지 않은 경우에도 발생할 수 있습니다.

와 날짜를 확인

date

잘못 구성된 경우 다음을 수행하여 시간대 및 날짜 자동 동기화를 설정하십시오.

apt-get install ntp ntpdate && service ntp stop
dpkg-reconfigure tzdata
ntpdate-debian
service ntp start

1

이 오류의 발생 가능성은 적지 만 때로는 가능한 한 가지 이유는 다른 만료 날짜로 동일한 키를 두 번 추가 한 경우입니다. 이 답변이 귀하와 관련이 있으려면 그렇게했을 것입니다.

나 자신의 키로 자신의 저장소를 호스팅 할 때와 마찬가지로 이런 일이 발생할 수 있습니다. 키가 만료 되려고 할 때 단순히 키 대신 수명을 연장하고 미리 설정을 사용하여 원래 키를 설치했지만 deb 패키지를 사용하여 업데이트 된 키를 설치 한 경우 이전 키는 /etc/apt/trusted.gpg새 키에있는 반면 아래에 별도의 파일로 끝납니다 /etc/apt/trusted.gpg.d/. 이전 키는 새 키를 음영 처리하며이 키는 완전히 무시됩니다 apt-key. 을 실행하여 이전 키를 제거하면 gpg --keyring /etc/trusted.gpg --delete-keys <keyid>새 키가 감지됩니다.

이것은 약간의 비표준 코너 구성이지만, 내가 한 것과 같은 이유로 다른 사람 이이 문제를 겪을 경우 내 대답이 혼란을 덜 수 있기를 바랍니다.


1

더 간단한 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두 번 이상 사용하는 것과 같은 일을한다면 더 좋은 도구가 있다고 생각합니다. (또한 다른 질문 에 따라 이것을 만들었습니다 .)


-1

당신은 아무것도 필요 가 없습니다 . 이것은 단지 경고 일뿐 W:입니다. 접두사 에서 볼 수 있습니다 .


1
그가 아무것도 할 필요가 없다면 Repos에 대한 전체 서명 시스템은 쓸모가 없습니다. 이것은 보안 기능이며 프로덕션 환경에서는 키 무결성이 보안에 중요합니다.
Broco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.