不能sudo apt-get update
:
Ign:8 http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04 Release.gpg
Reading package lists... Done
W: GPG error: http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04 Release: The following signatures were invalid: EXPKEYSIG 5A7D1D38BEB6D886 home:Horst3180 OBS Project <home:[email protected]>
E: The repository 'http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04 Release' is not signed.
经过多次尝试,我得到
1 signature not checked due to a missing key
我的尝试是:
sudo apt-key adv --keyserver hkp://keys.gnupg.net:80 --recv-keys 5A7D1D38BEB6D886
Executing: /tmp/apt-key-gpghome.f5yVraTkTa/gpg.1.sh --keyserver hkp://keys.gnupg.net:80 --recv-keys 5A7D1D38BEB6D886
gpg: key 5A7D1D38BEB6D886: 1 signature not checked due to a missing key
gpg: key 5A7D1D38BEB6D886: "home:Horst3180 OBS Project <home:[email protected]>" not changed
gpg: Total number processed: 1
gpg: unchanged: 1
我是不是更接近目标了?其他没有结果的尝试包括:
此命令
wget -nv http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04/Release.key -O Release.key sudo apt-key add - < Release.key
-
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04/ /' > /etc/apt/sources.list.d/home:Horst3180.list" wget -nv https://download.opensuse.org/repositories/home:Horst3180/xUbuntu_16.04/Release.key -O Release.key sudo apt-key add - < Release.key
此命令
sudo rm /var/lib/apt/lists/* -vf
此命令
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5A7D1D38BEB6D886
返回
Executing: /tmp/apt-key-gpghome.9tPKjtyC1E/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 5A7D1D38BEB6D886 gpg: keyserver receive failed: No keyserver available
请注意Horst3180 的家居项目,GPG 密钥5A7D1D38BEB6D886
的到期日期为2019-10-02
,因此该密钥似乎不再有效。
答案1
一般来说,如果 gpg 密钥已过期,当您不是 repo 的所有者时,您什么也做不了,只能尝试联系管理员。
如果你信任这个 repo,或者确实需要其中的一些东西,而且不太关心这个安全功能,你也可以通过--allow-unauthenticated
向 apt-get 添加选项来跳过 gpg 检查。
例子:sudo apt-get --allow-unauthenticated update
,sudo apt-get -y --allow-unauthenticated install foo
。
您还可以使用/etc/apt/apt.conf.d/
目录中自己的配置文件使此选项永久生效。在您的配置文件中,只需添加APT::Get::AllowUnauthenticated "true";
节即可。
注意:如果选择永久选项,您应该小心添加您的选项,以便它只在这个特定的 repo 上生效,而不是对其他每个 repo 生效,因为它被视为安全风险。
答案2
当密钥仍然有效时,也可能会出现同样的错误。我有一个 Release.key 在一台 ubuntu 机器上运行良好,但在另一个系统上
apt-key add Release.key
爆炸式增长
gpg: invalid key resource URL '/tmp/apt-key-gpghome.L3TpJ04C0i/isv:ownCloud:desktop.asc.gpg'
gpg: keyblock resource '(null)': General error
gpg: key 4ABE1AC7557BEFF9: 1 signature not checked due to a missing key
gpg: key 4ABE1AC7557BEFF9: 1 signature not checked due to a missing key
gpg: key 3B4FE6ACC0B21F32: 3 signatures not checked due to missing keys
gpg: key D94AA3F0EFE21092: 3 signatures not checked due to missing keys
gpg: key 871920D1991BC93C: 1 signature not checked due to a missing key
gpg: Total number processed: 6
gpg: skipped new keys: 6
但是 eggpg --import < Release.key
可以很好地导入密钥。(知道这一点很好,但对 apt 没有帮助。)
手动解决方法(但是对于过期的密钥则不起作用):
cat Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/owncloud-test.gpg
之后apt update
成功,apt install ...
没有任何允许未经身份验证的诡计。似乎 apt-key add 在我的某个系统上过于挑剔。
答案3
您可以通过删除有问题的文件来解决此问题。就我而言,错误是gpg: invalid key resource URL '/tmp/apt-key-gpghome.HrtqocacFC/home:manuelschneid3r.asc.gpg'
。一个简单的方法sudo rm "/etc/apt/trusted.gpg.d/home:manuelschneid3r.asc"
解决了这个问题。