即使使用 sudo apt-key,也无法检索 GPG 密钥

即使使用 sudo apt-key,也无法检索 GPG 密钥

我希望我没有因为以下原因而违反重复政策:无法检索 Gpgkeys,但我尝试了该帖子中提到的所有方法,但都无济于事。此时,我估计是防火墙和/或代理问题阻碍了典型解决方案,我正在尝试找出是否有其他方法来解决我的问题。

我主要想做的是将我的 PostgreSQL 版本从 9.5 更新到 10,但为了做到这一点,我需要更新我的存储库。 以下是输出:

ava@3b97b310abf0:~/workspace/scripts/PostGISSetup$ sudo apt update
Get:1 http://packages.ros.org/ros/ubuntu xenial InRelease [4,678 B]
Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]                            
Get:3 http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu xenial InRelease [23.8 kB]           
Err:1 http://packages.ros.org/ros/ubuntu xenial InRelease                                               
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654
Err:3 http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu xenial InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 089EBE08314DF160
Hit:4 http://archive.ubuntu.com/ubuntu xenial InRelease
Get:5 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
Get:6 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
Reading package lists... Done     
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://packages.ros.org/ros/ubuntu xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654
W: GPG error: http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 089EBE08314DF160
E: The repository 'http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu xenial InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

在此论坛和其他论坛上的研究表明,这表明我有两个公钥已过期,需要更新,可以使用 apt-key 命令完成更新。不幸的是,这对我来说似乎也不起作用:

ava@3b97b310abf0:~/workspace/scripts/PostGISSetup$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F42ED6FBAB17C654 089EBE08314DF160
Executing: /tmp/tmp.s8hITSbMYH/gpg.1.sh --keyserver
hkp://keyserver.ubuntu.com:80
--recv-keys
F42ED6FBAB17C654
089EBE08314DF160
gpg: requesting key AB17C654 from hkp server keyserver.ubuntu.com
gpg: requesting key 314DF160 from hkp server keyserver.ubuntu.com
gpgkeys: key F42ED6FBAB17C654 can't be retrieved
gpgkeys: key 089EBE08314DF160 can't be retrieved
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
gpg: keyserver communications error: keyserver helper general error
gpg: keyserver communications error: unknown pubkey algorithm
gpg: keyserver receive failed: unknown pubkey algorithm

我发现与运行此命令相关的三个主要错误:连接失败、服务器超时和“无法检索”。由于这不是前两个错误,因此我假设我的问题不是无法与密钥服务器建立连接,而是无法获取响应。在上面链接的帖子中,另一位用户表示他的问题与特定端口被阻止有关。

这就是我的问题的关键所在。我身处防火墙和代理的后面,我无法控制它们,它们的配置会定期更改,而且不会通知我。因此,我现在认为最好完全脱离包管理系统,手动更新我需要的软件。这是一个合理的解决方案吗?我该如何从 apt 中删除有问题的条目并执行此操作?有没有我遗漏的更好的选择?谢谢您的帮助!

答案1

我按照此页面上的说明解决了这个问题: https://www.linuxuprising.com/2019/06/fix-missing-gpg-key-apt-repository.html 并运行脚本:

sudo apt update 2>&1 1>/dev/null | sed -ne 's/.*NO_PUBKEY //p' | while read key; do if ! [[ ${keys[*]} =~ "$key" ]]; then sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys "$key"; keys+=("$key"); fi; done

相关内容