Tôi nên làm gì khi nhận được thông báo lỗi KEYEXPIRED sau khi cập nhật apt-get?


74

Trong khi cập nhật các gói của tôi trên một hệ thống dựa trên debian bởi

sudo apt-get update

Tôi đã nhận được thông báo lỗi đó:

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

Tôi nên làm gì để khắc phục điều này?

Câu trả lời:


117

Để tìm bất kỳ khóa kho lưu trữ đã hết hạn và ID của chúng, hãy sử dụng apt-keynhư sau:

LANG=C apt-key list | grep expired

Bạn sẽ nhận được một kết quả tương tự như sau:

pub   4096R/BE1DB1F1 2011-03-29 [expired: 2014-03-28]

ID khóa là bit sau /tức là BE1DB1F1trong trường hợp này.

Để cập nhật khóa, hãy chạy

sudo apt-key adv --recv-keys --keyserver keys.gnupg.net BE1DB1F1

Lưu ý: Cập nhật khóa rõ ràng sẽ không hoạt động nếu nhà bảo trì gói chưa (chưa) tải lên khóa mới. Trong trường hợp đó, có rất ít bạn có thể làm gì ngoài việc liên hệ với người bảo trì, báo lỗi cho bản phân phối của bạn, v.v.

Một lớp lót để cập nhật tất cả các khóa đã hết hạn: (cảm ơn @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
Điều đó không làm việc cho tôi, sau khi lệnh cập nhật khóa, khóa vẫn hết hạn.
Karl Forner

@KarlForner đã thêm khóa thành công?
kynan

vâng, nó đã thành công
Karl Forner

4
Một lớp lót: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
Chỉ là một gợi ý cho phần grep: "hết hạn" là i18ned, do đó, tùy thuộc vào cài đặt LANG *, điều này có thể không hoạt động, ví dụ, đối với cài đặt pl_PL.UTF-8, người ta phải thay đổi "hết hạn" thành "wygasł" để thực hiện điều này- lót để làm việc.
Cromax

6

Bạn cần lấy khóa mới hơn và thêm nó, tại thời điểm đó apt sẽ phát hiện ra nó và không phàn nàn. Điều này thường không xảy ra, nhưng đôi khi nó xảy ra. Những gì bạn thực sự cần là để biết mã hex của khóa bạn cần thêm; một khi bạn có điều đó, nó sẽ xuống dốc khá nhiều từ đó.

Vài ví dụ:


2

Tôi đã có lỗi tương tự, nhưng vấn đề là trong thời gian hệ thống. Năm 1961 :)

Tôi đã sửa ngày / giờ hệ thống và sau đó có thể cập nhật mà không cần pro


1

Trên Wiki Wiki về SecureAPT , tôi thấy rằng tôi nên xóa dòng chứa non-ustừ /etc/apt/source.list.

Tôi thực sự đã làm điều đó và nó đã làm việc.


5
Điều này có thể đã làm việc trong một trường hợp cụ thể nhưng không phải là một giải pháp chung chung
kynan

1

Nó cũng có thể xảy ra khi ngày không chính xác.

Kiểm tra ngày với

date

Nếu nó được định cấu hình sai, hãy làm như sau để đặt đồng bộ hóa múi giờ và ngày tự động của bạn.

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

1

Một nguyên nhân rất khó xảy ra, nhưng đôi khi có thể, gây ra lỗi này là nếu đã thêm cùng một khóa hai lần với các ngày hết hạn khác nhau. Bạn có thể biết rằng đã làm như vậy để câu trả lời này có liên quan đến bạn.

Điều này có thể xảy ra, như đã làm với tôi, khi lưu trữ kho lưu trữ của riêng bạn bằng các khóa riêng của bạn. Nếu bạn, khi khóa sắp hết hạn, chỉ cần kéo dài tuổi thọ của nó thay vì thay đổi nó và nếu bạn đã cài đặt khóa gốc bằng cách sử dụng trước nhưng khóa được cập nhật bằng gói gỡ lỗi, thì khóa cũ sẽ ở trong /etc/apt/trusted.gpgkhi khóa mới kết thúc như một tập tin riêng biệt dưới /etc/apt/trusted.gpg.d/. Khóa cũ sẽ phủ bóng cái mới, sẽ bị bỏ qua hoàn toàn apt-key. Xóa khóa cũ bằng cách chạy gpg --keyring /etc/trusted.gpg --delete-keys <keyid>và khóa mới của bạn sẽ được phát hiện.

Đây là một chút cấu hình góc không chuẩn, nhưng tôi hy vọng câu trả lời của tôi có thể cứu được một số nhầm lẫn trong trường hợp bất kỳ ai khác gặp phải vấn đề này vì lý do tương tự như tôi đã làm.


1

Một oneliner đơn giản hơn:

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

Tôi chỉ cảm thấy rằng nếu bạn đang làm những việc như sử dụng cutnhiều lần, có một công cụ tốt hơn. (Ngoài ra, tôi đã tạo ra điều này dựa trên một câu hỏi khác .)


-1

Bạn không phải làm bất cứ điều gì. Nó chỉ là một cảnh báo, bạn có thể thấy điều đó từ W:tiền tố.


1
Nếu anh ta không phải làm bất cứ điều gì thì toàn bộ hệ thống Ký cho Repos sẽ là vô ích. Đây là một tính năng bảo mật và tính toàn vẹn của khóa trong môi trường sản xuất là rất quan trọng đối với bảo mật.
Broco 15/03/18
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.