本想在 Debian Squeeze 上安裝一些依賴,沒想到剛執行 apt-get update
,就出現這樣的錯誤信息。
W: GPG error: http://mirrors.163.com squeeze Release: The following signatures were invalid: KEYEXPIRED 1520281423 KEYEXPIRED 1501892461
E: Release file expired, ignoring http://mirrors.163.com/debian-archive/dists/squeeze-lts/Release (invalid since 923d 19h 26min 3s)
問題出在哪里
Debian Squeeze 6.0 版本對於當前最新的 9.5 版本來說,是過於陳舊了。
錯誤信息表示,證書過期,也不是太意外的事。
以 The following signatures were invalid
為關鍵字進行搜索,大體有兩種方案:
緩存原因?
搜索到的大多數結果給出這樣的解答,比如這里
sudo apt-get clean
cd /var/lib/apt
sudo mv lists lists.old
sudo mkdir -p lists/partial
sudo apt-get clean
sudo apt-get update
他們認為原因是 apt 系統出現臨時性的緩存故障,所以用 clean 的方式來清除。
我不知道在當時是否真的有效,畢竟那篇博客寫在 2012 年,當時 Debian 6.0 也才發布一年,決不至於密鑰出現過期,懷疑到緩存身上也
情有可原。
但是當前我的密鑰是真的過期了,invalid since 923d(ays),我嘗試了這種 clean 的方法,並不能生效。看來解決方案也有保持期啊。
密鑰續期?
另一種方案是續期密鑰,比如這里
sudo apt-key list | grep "expired: "
sudo apt-key adv --keyserver keys.gnupg.net --recv-keys [KEY]
這種方案想為過期的密鑰續期,使其可用。
我先在系統里查看了密鑰的情況,確實過期的太久。
$ sudo apt-key list
/etc/apt/trusted.gpg
--------------------
..........................
..........................
..........................
pub 2048R/6D849617 2009-01-24 [expired: 2013-01-23]
uid Debian-Volatile Archive Automatic Signing Key (5.0/lenny)
pub 4096R/B98321F9 2010-08-07 [expired: 2014-08-05]
uid Squeeze Stable Release Key <debian-release@lists.debian.org>
..........................
..........................
..........................
於是用 apt-key adv
進行續期,再次查看密鑰情況,發現並沒有多少改觀,
時間確實前進更新了幾個月,但是依舊保持着 expired 狀態,畢竟還差很多年。
我想可能和第一種方案是一樣的問題,“方案過期”。在當時版本還支持的時候,應該是有效果的,但是當前情況已經
發生了變化,錯誤信息是一樣的,但是問題本身已經出現了本質的變化。
當前的正確方案
於是繼續搜索,在官方文檔的FAQ部分,找到了官方解答。
1.修改 source.list
deb http://archive.debian.org/debian squeeze main
deb http://archive.debian.org/debian squeeze-lts main
2.同時配置 apt,添加以下內容到 /etc/apt/apt.conf(沒有則新建)
Acquire::Check-Valid-Until false;
其中特別提到了 The second line will fail with an "expired" type message, so you also need to ...
,so sweet!
既然 Debian Squeeze 已經不再更新,apt source 也划入了 archive,這個方案應該是最“長治久安”的。cheers~